假设我们有类User
,有些属性如下:
public class User{
public string Name{get;set;};
public int Age{get;set;};
}
由于某种原因,我们无法修改用户(实现INotifyPropertyChanged
),但我们希望绑定到用户的名称。因此,如果名称在某个地方发生变化(不是由我们改变,意味着我们可能不太清楚何时何地发生变化,但我们知道会发生变化),也可以更改UI。
有什么好的建议吗?
答案 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");
}
}
}
}