我有两个radiobuttons。
一个(rb1
)绑定到我的ViewModel
的属性。如果属性为true,则在加载应用程序时检查rb1
。如果属性为false,则{@ 1}}未选中(这是正确的)。
但是在最后一种情况下,两个radiobutton都未选中,我需要在属性为false时检查第二个radiobutton rb1
。我怎么能这样做?
答案 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。