代码之家  ›  专栏  ›  技术社区  ›  Psytronic

项目源更改后的主收音机选择

  •  0
  • Psytronic  · 技术社区  · 15 年前

    设置:

    我有一个组合框,它是itemsource绑定到自定义类的可观察集合,一个属性是list<myenum>。

    我有一个itemscontrol,它数据绑定到组合框的选定项列表<myenum>属性。

    itemscontrol数据模板创建一个单选按钮列表,每个单选按钮代表列表中的各个枚举值。

    欲望:

    当我更改组合框中的值时,itemscontrol源将更新。我想发生的是,如果新项控件源中的单选按钮与上一个列表中的选定单选按钮相同(在更新之前),则将选中此项。

    当前想法:

    将选中的事件分配给单选按钮,单选按钮在窗口类中维护可以比较的myenum属性。使radiobox的ischecked属性绑定到转换器,并与myenum属性进行比较。为了实现这一点,我将窗口类从ivalueconverter扩展,这样converter函数就可以访问myenum属性。

    问题:

    我不知道如何让ischecked绑定使用窗口作为转换器。我试过在绑定的转换器部分使用相对源,但这不起作用 IsChecked="{Binding Converter={RelativeSource={RelativeSource Self}}}"

    首选答案:

    如果有可能的话,帮助您更正绑定语法。

    想一个更合适的方法来实现我想要的。

    1 回复  |  直到 15 年前
        1
  •  0
  •   Wallstreet Programmer    15 年前

    我也不知道如何在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.    
    }