【发布时间】: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