首页 文章

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

提问于
浏览
1

我有一个简单的复选框

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

在Code中,我有一个带有“INotifyPropertyChanged”的类和Property

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 .

  • 基础数据不会更改

  • 我希望CheckBox保持不受控制
    检查CheckBox .

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

我想到了“OnPropertyChanged(”ForceInheritance“);”会做的伎俩,但事实并非如此 .

感谢您的时间 .

1 回答

  • 1

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

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

    希望能帮助到你 .

相关问题