WPF复选框绑定 - 在属性设置涂改值不影响UI
-
18-09-2019 - |
题
我有一个简单的复选框
<CheckBox IsChecked="{Binding ForceInheritance}"/>
在代码我有一类“INotifyPropertyChanged的”和属性
public bool ForceInheritance
{
get { return forceInheritance; }
set
{
if (forceInheritance != value)
{
value = SomeTest();
if (forceInheritance != value)
{
//something is done here.
}
OnPropertyChanged("ForceInheritance");
}
}
}
如果SomeTest()返回!值,使底层数据不具有改变复选框仍然改变其状态器isChecked
例如:结果 ForceInheritance是假的。结果 复选框被点击。点击 SomeTest()返回false。结果 - >底层数据不改变,点击 - >我期望的复选框取消选中停留点击 复选框被选中。
我能做些什么来改变不了CheckBox的状态器isChecked当二传手实际上并没有改变价值?
我认为 “OnPropertyChanged(” ForceInheritance “);”会做的伎俩,但事实并非如此。
感谢您的时间。
解决方案
,会出现此问题,因为当你点击复选框它的价值变化。然后结合导致属性集。在那里,你与它的价值操纵,并希望调用OnPropertyChanged会造成背部约束力的行动更新复选框值。但是不起作用,因为更新属性后,更新控制可能会产生无限的更新循环。为了防止这种情况的PropertyChanged被忽略。
您可以做的,是你的财产setter方法的一些逻辑移动到绑定验证规则。您可以阅读这里了解验证规则或发表评论,如果您需要更多信息或示例。
希望它能帮助。
不隶属于 StackOverflow