Я связал перечисления с переключателями раньше, и я обычно понимаю, как это работает. Я использовал альтернативную реализацию из этого вопроса: Как связать RadioButtons с перечислением?
Вместо перечислений, я хотел бы создать набор времени выполнения, определенный пользователем, и представить их как набор радиокнопок. Я получил представление, работающее против набора с включенным временем выполнения с ListView, привязанным к свойствам ItemsSource и SelectedItem, поэтому мой ViewModel подключен правильно. Теперь я пытаюсь переключиться с ListView на ItemsControl с помощью переключателей.
Здесь, насколько я понял:
<Window.Resources>
<vm:InstanceToBooleanConverter x:Key="InstanceToBooleanConverter" />
</Window.Resources>
<!-- ... -->
<ItemsControl ItemsSource="{Binding ItemSelections}">
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type vm:ISomeType}">
<RadioButton Content="{Binding Name}"
IsChecked="{Binding Path=SelectedItem, Converter={StaticResource InstanceToBooleanConverter}, ConverterParameter={Binding}}"
Grid.Column="0" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
InstanceToBooleanConverter имеет ту же реализацию, что и EnumToBooleanConverter из этого другого вопроса. Это кажется правильным, так как кажется, что он просто вызывает метод Equals:
public class InstanceToBooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value.Equals(parameter);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value.Equals(true) ? parameter : Binding.DoNothing;
}
}
Проблема, которую я получаю сейчас, заключается в том, что я не могу понять, как отправить значение времени выполнения в качестве ConverterParameter. Когда я пытаюсь (с кодом выше), я получаю эту ошибку:
"Связывание" не может быть установлено в свойстве "ConverterParameter" типа "Связывание" . "Связывание" может быть установлено только в DependencyProperty объекта DependencyObject.
Есть ли способ привязки к экземпляру элемента и передать его в IValueConverter?