Я связал перечисления с переключателями раньше, и я обычно понимаю, как это работает. Я использовал альтернативную реализацию из этого вопроса: Как связать 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
?