【发布时间】:2015-08-12 20:44:34
【问题描述】:
假设我的 ViewModel 中有一个名为 Location 类型为 Point 的属性,我的 View 绑定到该属性。我正在使用 MVVM Light 的 ObservableObject 和 RaisePropertyChanged 设置来引发属性更改通知。问题是当我在 ViewModel 中执行以下操作时:
this.Location = new Point(100,100);
我的视图更新正确。但如果我这样做:
this.Location.Offset(10,10);
我的视图没有更新,这意味着Location 属性不会通知视图有关更改。为什么会这样? Point或Size等内置类型的子属性如何处理变更通知?
【问题讨论】:
-
DepedencyProperties 不属于 ViewModel。
-
也就是说,
Point是struct。你不能只是改变它的价值观并期待任何东西。将整个Point替换为新的Point。 -
@dotNET 你不应该在视图模型中使用依赖属性。没有理由这样做。改为实现 INotifyPropertyChanged。
-
@Clemens: 嗯...实际上我没有在我的虚拟机中使用
DependencyProperty。这些只是普通属性,带有 MVVM Light 的ObservableObject和RaisePropertyChanged设置。但是手头的问题仍然没有解决;我的普通属性是Point类型,我无法知道是否有人为Point结构的成员赋值。
标签: c# wpf mvvm inotifypropertychanged