【问题标题】:XAML TwoWay Binding of RadioButton IsChecked单选按钮的 XAML 双向绑定 IsChecked
【发布时间】:2016-04-10 07:39:15
【问题描述】:

我正在尝试将两种方式绑定应用到 WPF 中的单选按钮。在 XAML 中,我有以下内容:

<RadioButton IsChecked="{Binding IsActive, Mode=TwoWay}"/>

在我拥有的相应 ViewModel 中

private bool _isActive;

public bool IsActive
{
    get { return _isActive; }
    set
    {
        _isActive = value;
        OnPropertyChanged("IsActive");
    }
}

因为我将模式设置为TwoWay,所以我期待在切换单选按钮时,视图模型中的 IsActive 属性会相应更新。但是,set 中的 IsActive 中的 value 始终为 true,因此单选按钮始终处于打开状态。

我是否误解了单选按钮的 TwoWay 属性,如果是,我该如何实现预期的效果?

【问题讨论】:

  • 您的假设是正确的,默认情况下 IsChecked 的绑定是 TwoWay,因此您不需要在绑定中指定它。这里一定有其他东西在起作用,也许是另一个单选按钮导致它发生变化。可以在 IsActive 集合中使用断点来查看属性值是如何变化的吗?
  • 对同样继承自 ToggleButton 的 CheckBox 没有这个问题。我可以使用它。
  • @GlenThomas - value 属性始终为真。用 CheckBox 替换 RadioButton 会给出正确的行为,即在 true 和 false 之间切换。
  • 哦,我明白了,您想将 RadioButton 用作 CheckBox? RadioButton 控件需要在只能选中一个的组中使用,选中一个会取消选中组中的所有其他控件。

标签: wpf xaml data-binding radio-button


【解决方案1】:

您实际上无法通过单击单个 RadioButton 来切换它。您可能想在此处使用 Checkbox 或 ToggleButton。

如果您想使用 RadioButtons,则必须至少使用其中的两个。在每个 RadioButton 的 IsActive 属性的设置器中,您必须取消设置其他按钮。

还有其他选择,例如,您可以将所有 RadioButtons 绑定到单个枚举属性并使用转换器。例如,请参见: http://wpftutorial.net/RadioButton.html

【讨论】:

  • 很高兴知道。应使用 CheckBox
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-28
  • 1970-01-01
  • 1970-01-01
  • 2021-05-24
  • 2020-06-25
  • 1970-01-01
  • 2016-06-22
相关资源
最近更新 更多