绑定财产我们无法改变

时间:2013-08-21 05:31:16

标签: wpf data-binding mvvm

假设我们有类User,有些属性如下:

public class User{
    public string Name{get;set;};

    public int Age{get;set;};
}

由于某种原因,我们无法修改用户(实现INotifyPropertyChanged),但我们希望绑定到用户的名称。因此,如果名称在某个地方发生变化(不是由我们改变,意味着我们可能不太清楚何时何地发生变化,但我们知道会发生变化),也可以更改UI。

有什么好的建议吗?

1 个答案:

答案 0 :(得分:0)

绑定到该值,将其标记为OneWay,以便无法将其推送到ViewModel。

<TextBlock Text={Binding Path=User.Name, Mode=OneWay}" />

然后在ViewModel中设置用户的名称,以便只要神秘的某处工作就可以设置/更改它。因此,当ViewModel更新时,View将收到警报。可以在Model或ViewModel上使用INotifyPropertyChanged。

public class User
{
    private string name;
    public string Name
    {
        get { return name; }
        set
        {
            if(name != value)
            {
                name = value;
                RaisePropertyChanged("Name");
            }
        }
    }
}