未选中的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中修复了--您现在应该能够绑定单选按钮的值而不会遇到此问题。