Я раньше связывал перечисления с переключателями, и в целом я понимаю, как это работает. Я использовал альтернативную реализацию из этого вопроса: Как привязать 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» типа «Binding». «Привязка» может быть установлена только для свойства DependencyProperty объекта DependencyObject.
Есть ли способ привязать к экземпляру элемента и передать его IValueConverter
?