未选中的wpf单选按钮

未选中的wpf单选按钮,wpf,radio-button,Wpf,Radio Button,我有两个单选按钮 一个(rb1)绑定到我的ViewModel的属性。如果属性为true,则在加载应用程序时会检查rb1。如果属性为false,则取消选中rb1(没错) 但在最后一种情况下,两个单选按钮都未选中,我需要在属性为false时选中第二个单选按钮(rb2)。我该怎么做???您遇到的问题是数据绑定“丢失”。让我引述: 单击将更改的UI状态 正确选择按钮(例如, 单击工具栏将取消选中Foo和 复选框)。但是我注意到如果 IsFoo和IsBar的基本价值 在那之后有没有改变过 按钮不会被检查

我有两个单选按钮

一个(
rb1
)绑定到我的
ViewModel
的属性。如果属性为true,则在加载应用程序时会检查rb1。如果属性为false,则取消选中rb1(没错)


但在最后一种情况下,两个单选按钮都未选中,我需要在属性为false时选中第二个单选按钮
(rb2)
。我该怎么做???

您遇到的问题是数据绑定“丢失”。让我引述:

单击将更改的UI状态 正确选择按钮(例如, 单击工具栏将取消选中Foo和 复选框)。但是我注意到如果 IsFoo和IsBar的基本价值 在那之后有没有改变过 按钮不会被检查 国家更新。使用Snoop工具, 我发现这是一个被检查的状态 之后已手动设置其状态 单击其中一个按钮。一旦 已设置依赖项属性 手动操作时,它将失去绑定。这 这就是为什么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.
     }
}

有关详细信息,请参阅。

因此,您有两个单选按钮。这两者是否绑定到同一个属性?当属性值为true时,需要检查rb1和rb2;当属性值为false时,需要检查rb1和rb2?您使用的是.NET的哪个版本?在.NET 4.AFAIK中修复了数据绑定单选按钮的问题,该错误在.NET 4.0中修复了--您现在应该能够绑定单选按钮的值而不会遇到此问题。