设定:
我有一个组合框,它的项目源绑定到ObservableCollection< T>对于自定义类,一个属性是List< myenum>。
我有一个itemscontrol,它被数据绑定到组合框的选定项目List< myenum>属性。
itemscontrol datatemplate创建一个radiobuttons列表,每个按钮表示列表中的各个枚举值。
欲望:
当我更改组合框中的值时,itemscontrol源会更新。我想要发生的是,如果新itemscontrol源中的单选按钮与上一个列表中选定的单选按钮相同(在更新之前),则需要检查。
当前的想法:
将Checked事件设置为单选按钮,该按钮在窗口类中维护myenum属性,可以进行比较。使radiobox的IsChecked属性绑定到转换器并与myenum属性进行比较。为了实现这一点,我使窗口类从IValueConverter扩展,这样转换器函数可以访问myenum属性。
问题:
我不知道如何让IsChecked绑定将窗口用作转换器。我尝试在绑定的转换器部分使用相对源,但这不起作用
IsChecked="{Binding Converter={RelativeSource={RelativeSource Self}}}"
首选答案:
如果可能的话,可以帮助纠正绑定语法。
想要一种更合适的方式来实现我想要的东西。
答案 0 :(得分:0)
我也不知道如何在xaml中将窗口用作值转换器。而是创建一个独立的值转换器类,其中包含枚举类型的公共属性。接下来,在窗口的构造函数中,获取对值转换器实例的引用,并将其存储在私有成员中。
XAML:
<local:MyValueConverter x:Key="ConvertSomething" />
代码背后:
private MyValueConverter _myValueConverter;
public Window1()
{
InitializeComponent();
_myValueConverter = FindResource("ConvertSomething") as MyValueConverter;
}
private void RadioButton_Checked(object sender, RoutedEventArgs e)
{
// You can access _myValueConverter here and set its public enum property.
}