wpf中的数据绑定与getter中的表达式

时间:2018-12-06 08:35:29

标签: c# wpf data-binding

我的模型中有一个具有吸气剂的属性

public boolean Status {
    get {
        return 1==2;
    }
}

和标签

<Label Content="{Binding Path=Status, Mode=OneWay}" />

我想监视状态。现在,当状态值更改时,UI不会使用该值更新。

2 个答案:

答案 0 :(得分:0)

您将必须做两件事:

  1. 在包含Status属性的类中实现INotifyPropertyChanged接口。

  2. 调用PropertyChanged处理程序,然后在Status属性的setter中调用该方法,该方法将作为INotifyPropertyChanged的一部分实现-如果您不知道它的名称,请对其进行Google搜索,然后您将获得代码-它基本上通知UI属性已更改。

  3. 如果仅获取Status属性,则必须在知道状态已更新后调用PropertyChanged方法。

答案 1 :(得分:0)

假设该视图模型已实现INotifyPropertyChanged,则要让UI重新读取属性值,必须引发PropertyChanged事件。这是只获取属性还是获取/设置一个属性都没关系。

由于它是只读的,因此您需要在更改某些内容后调用OnPropertyChanged,这会影响getter表达式的结果:

private int a;
private int b;

public bool Status => a == b;

private void DoSomething()
{
    a = ...;
    b = ...;

    // ...

    OnPropertyChanged(nameof(Status));
}