我有一个简单的复选框

<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方法的一些逻辑移动到绑定验证规则。您可以阅读这里了解验证规则或发表评论,如果您需要更多信息或示例。

希望它能帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top