我之前已经将枚举绑定到单选按钮,并且我大致了解它是如何工作的。我使用了这个问题的替代实现:如何将 RadioButtons 绑定到枚举?
我想生成一个自定义类型的运行时枚举集,而不是枚举,并将它们呈现为一组单选按钮。我已经得到了一个视图,它与一个运行时枚举的集合一起工作ListView
,绑定到ItemsSource
andSelectedItem
属性,所以我ViewModel
的连接正确。现在我正在尝试使用单选按钮从 a 切换ListView
到 a 。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”类型的“ConverterParameter”属性上设置“Binding”。只能在 DependencyObject 的 DependencyProperty 上设置“绑定”。
有没有办法绑定到项目实例,并将其传递给IValueConverter
?