我在一个组中组合了几个RadioButton,因此只能检查一个。 RadioButtons绑定到布尔属性。
这非常有效,我的程序会对这些属性的更改做出反应。
假设选择了optA
。接下来,我选择optB
,PropertyB
的值设置为true,我的程序会做出相应的反应。但是,此时optA
和optB
都为真,直到“收音机组”按钮将optA
更新为false,再次触发我的“IsSelected”事件。
我认为这是完全正确的行为...... 但是,如何区分用户的更改和组中的自动更改?
编辑:代码
<RadioButton Name="featureCheckBox" GroupName="featureRadioButtonGroup" IsChecked="{Binding Path=IsSelected, Mode=TwoWay}" />
public bool IsSelected {
get{ return _isSelected; }
set { PropertyChanged.ChangeAndNotify(ref _isSelected, value, () => IsSelected); }
}
答案 0 :(得分:2)
首先回答你的问题。
更改IsSelected属性的设置部分,如下所示。 (您当然必须编写if语句的实际代码)
public bool IsSelected
{
get{ return _isSelected; }
set
{
//If two options are true wait for the second change of values
//You will now only get One notification per change.
if (twoOptions are selected) return;
else PropertyChanged.ChangeAndNotify(ref _isSelected, value, () => IsSelected);
}
}
您可以只是听取错误值,但是您必须将任意选项设置为true才能开始。或者您可以只听取真值并忽略所有错误值,这意味着在组框将旧选项更新为false之前,您将遇到多个属性为真的问题。
现在提供建议。
一个更好的模型就是这个。
but do NOT group them
。 (对它们进行分组会导致UI强制只选择一个。这不适用于UI和业务逻辑的分离。)这样做的几个好处。
ANY
代码。)答案 1 :(得分:0)
我认为你可以通过它的价值来区分它。 True
始终由用户设置,因为您无法取消选择无线电频道,而false
始终来自另一个设置为true
的值。