【问题标题】:unchecked wpf radio buttons未选中的 wpf 单选按钮
【发布时间】:2011-06-01 02:31:45
【问题描述】:

我有两个单选按钮。

一个 (rb1) 绑定到我的 ViewModel 的属性。如果属性为真 rb1 在应用程序加载时被检查。如果属性为 false rb1 未选中(没错)。

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

【问题讨论】:

  • 所以,你有两个单选按钮。这两个都绑定到同一个属性吗?当属性值为真时,你需要检查rb1和不检查rb2,当它是假时,你需要不检查rb1和检查rb2?
  • 您使用的是什么版本的 .NET? .NET 4 中修复了数据绑定单选按钮的问题。

标签: wpf radio-button


【解决方案1】:

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

点击会改变用户界面状态 正确的按钮(例如, 单击 Bar 将取消选中 Foo 和 检查栏)。但我注意到,如果 IsFoo 和 IsBar 的潜在价值 在那之后一直改变, 按钮不会有他们的 IsChecked 状态已更新。使用窥探工具, 我发现 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

【讨论】:

  • AFAIK,此错误已在 .NET 4.0 中修复——您现在应该能够绑定 RadioButtons 的值而不会遇到此问题。
猜你喜欢
  • 2021-08-30
  • 2012-12-10
  • 2011-09-16
  • 2019-10-04
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多