在项目源更改后维护无线电选择

时间:2010-04-15 15:23:24

标签: wpf data-binding radio-button

设定:

我有一个组合框,它的项目源绑定到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}}}"

首选答案:

如果可能的话,可以帮助纠正绑定语法。

想要一种更合适的方式来实现我想要的东西。

1 个答案:

答案 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.    
}