多选一,采用一组RadioButton 组A,  
该组RadioButton的选择结果会影响另外一组控件族,组B!
怎么样通过数据绑定将enum变量(Va)与组A项关联,然后,组B会根据Va自动生成界面!
或者还有什么符合WPF数据驱动理念的方式实现?

解决方案 »

  1.   

    如果是数量固定的很好办,设计时如果可以确定按钮的数量,那么只需要写一个IValueConverter,负责把按钮是否选中和其所对应的值进行一个转换就可以了,这样当值改变的时候,选中状态也会变。
    如果数量不固定就很难办了。因为在设计时没法确定每一个按钮对应的值,这样IValueConverter就没法确认参与比较的参数。可以考虑给按钮加一个附加属性,这个属性用来存按钮对应的值,然后写一个IMultiValueConverter,完成bool值与枚举值转换的工作
      

  2.   


    所有组的控件数量一定!你是说用新的IValueConverter类,把RadioButton的IsChecked属性与标记选中的变量Va进行绑定?
      

  3.   

    如果是事件驱动的方式:
    就给每一个Radiobutton添加 Checked 事件处理函数,然后再该函数里面设置相关变量和改变对应的布局
      

  4.   

    to wddw1986:正在研究相关的实例,有不懂再跟帖询问!非常感谢!
      

  5.   

    to wddw1986:
    其实,我是想用一组radiobutton来模仿Blend的左边工具栏 的功能, 选择并记忆选中状态。如果我有一个enum 只有两个或者三个值,那么我可以和radiobutton的  IsChecked  属性的true 、fals 或者加一个null  状态进行IValueConverter转换。但当我想通过IsChecked  的状态来判断我选择了这一组按钮中的哪一个的时候,这种方法就不行了吧?是不是我的方法有问题,我应该用其它的控件来实现这个功能?
      

  6.   


    还想着通过IsChecked来判断状态说明你还是没真正明白什么是数据,什么是UI,你关心的是那个枚举当前的值,那就是当前的状态,至于哪个radiobutton被选中根本就没有意义,如果哪天UI控件换了,难道你的判断逻辑还要换吗?
      

  7.   

    <RadioButton IsChecked="{Wizard:ControlBinding MyFlag, Converter={Common:ConverterValue2Bool}, ConverterParameter='A'}" />
    <RadioButton IsChecked="{Wizard:ControlBinding MyFlag, Converter={Common:ConverterValue2Bool}, ConverterParameter='B'}" />这样你明白了吗?