未经检查的wpf单选按钮

时间:2010-12-29 14:54:53

标签: wpf radio-button

我有两个radiobuttons。

一个(rb1)绑定到我的ViewModel的属性。如果属性为true,则在加载应用程序时检查rb1。如果属性为false,则{@ 1}}未选中(这是正确的)。

但是在最后一种情况下,两个radiobutton都未选中,我需要在属性为false时检查第二个radiobutton rb1。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

您遇到的问题是DataBinding“丢失”。让我引用Matt Thalman

  

点击会改变UI的状态   按钮正确(例如,   单击栏将取消选中Foo和   检查吧)。但我注意到,如果   IsFoo和IsBar的潜在价值   在那一点之后永远改变了   按钮不会有他们的IsChecked   国家更新。使用Snoop工具,   我发现了IsChecked状态   之后手动设置了状态   点击其中一个按钮。一旦   已设置依赖项属性   手动,它失去了它的绑定。这个   这就是为什么IsChecked状态不是   当属性被改变   受到约束的更新。

一个简单的解决方案是继承RadioButton类:

public class DataBoundRadioButton : RadioButton
{
     protected override void OnChecked(RoutedEventArgs e)
     {
          // Do nothing. This will prevent IsChecked from being manually set and overwriting the binding.
     }

     protected override void OnToggle()
     {
          // Do nothing. This will prevent IsChecked from being manually set and overwriting the binding.
     }
}

有关详细信息,请参阅this blog entry