MVVM Light View不刷新绑定属性

时间:2018-08-10 15:18:12

标签: wpf mvvm data-binding mvvm-light

我使用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)

1 个答案:

答案 0 :(得分:1)

myModel.X触发PropertyChanged事件时,不会自动触发ViewModel的PropertyChanged。

此外,如果您的Model类已经实现INotifyPropertyChanged,则无需在ViewModel类中复制X属性。

只需将myModel成员变成公共财产

public class ViewModel
{
     public Model MyModel { get; set; } 
}

并通过{Binding MyModel.X}绑定到它。