我以前将枚举绑定到单选按钮,我大致了解它是如何工作的。我使用了这个问题中的替代实现:How to bind RadioButtons to an enum?
我想生成一个自定义类型的运行时枚举集,并将它们表示为一组单选按钮,而不是枚举。我已经获得了一个视图,该视图针对一个运行时枚举集使用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
发送。当我尝试(使用上面的代码)时,我得到这个错误:
Binding A‘
’不能在类型为'Binding‘的'ConverterParameter’属性上设置。只能在DependencyObject的DependencyProperty上设置“Binding”。
是否有一种方法可以绑定到item实例,并将其传递给IValueConverter
https://stackoverflow.com/questions/5891924
复制相似问题