我使用MVVM Light。 我的模型继承自MVVM Light的ObservableObject。 该模型具有属性X
public float X
{
get
{
return x_;
}
set
{
Set<float>(() => this.X, ref x_, value);
}
}
在ViewModel中,我有一个属性X
public float X
{
get
{
myModel.X;
}
}
“我的视图”有一个标签,其中的内容绑定到了ViewModel属性X。
(DataContext设置为ViewModel)
从代码更新Model中的属性X的值时,视图中的标签将永远不会更新。
问题是确保“视图”正确反映更新后值的推荐方法是什么?
(如果我在ViewModel中创建一个返回Model的属性,则可以将Direclty绑定到View中的Model.X。但是我希望View绑定到ViewModel而不是直接绑定到Model)
答案 0 :(得分:1)
当myModel.X
触发PropertyChanged事件时,不会自动触发ViewModel的PropertyChanged。
此外,如果您的Model类已经实现INotifyPropertyChanged,则无需在ViewModel类中复制X
属性。
只需将myModel
成员变成公共财产
public class ViewModel
{
public Model MyModel { get; set; }
}
并通过{Binding MyModel.X}
绑定到它。