WPF CheckBox绑定 - 更改属性集中的值不会影响UI

时间:2009-12-09 10:59:40

标签: wpf validation binding inotifypropertychanged

我有一个简单的复选框

<CheckBox IsChecked="{Binding ForceInheritance}"/>

在Code中我有一个带有“INotifyPropertyChanged”和属性

的类
public bool ForceInheritance
{
  get { return forceInheritance; }

  set
  {
    if (forceInheritance != value)
    {
      value = SomeTest();

      if (forceInheritance != value)
      {
        //something is done here.
      }

      OnPropertyChanged("ForceInheritance");
    }
  }
}

如果SomeTest()返回!值,那么基础数据不必更改CheckBox仍然会更改其IsChecked状态。

例如:
ForceInheritance是假的。
单击CheckBox。
SomeTest()返回false - &GT;基础数据不会改变 - &GT;我希望CheckBox保持不受控制 检查CheckBox。

当setter实际上没有更改值时,我怎么能不改变CheckBox的IsChecked状态?

我认为“OnPropertyChanged(”ForceInheritance“);”会做的但是没有。

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

出现此问题是因为当您单击复选框时,它的值会更改。然后绑定导致属性设置。在那里你操纵它的值,并希望调用OnPropertyChanged将导致后绑定操作更新复选框值。但是不起作用,因为更新属性后更新控件可能会产生无限更新循环。为了防止这种PropertyChanged被忽略。

您可以做的是将属性设置器的某些逻辑移动到绑定验证规则。您可以阅读有关验证规则的here,或者如果您需要更多信息或示例,请发表评论。

希望它有所帮助。