我希望在绑定到我的视图的项目发生变化时更新数据库。我注意到PropertyChanged事件在linq类中触发,但我如何告诉我的视图模型发生了变化?我使用Linq类作为我的模型,所以我不必重新创建它,这是不好的做法吗?我知道我可以在我的Linq类中创建一个新属性true或false,并从我的视图模型中使用该属性,但这不会太有效,因为每次我需要从SQL更新类时,我都必须重做。
- 视图和模型的分离是ViewModel的主要职责之一。否则模型将被特定于视图的属性和数据格式污染。
- ViewModel应该将Model包装为属性并将其暴露给视图,并且当被包装的ViewModel属性被视图修改时,它可以反过来调用模型特定的方法。
只是为了让其他人知道我为这个场景做了什么。我确实尝试了anivas发布的链接,它工作了,但不像我为我的解决方案提出的那么容易。我将选中的项目绑定到modelView上的一个属性,因为它是用户无论如何都可以更改的唯一属性。在我的属性的setter中,我为notifyProperty changed添加了一个处理程序。参见下面的代码private CustAccountLocation;
public CustAccountLocation SelectedStore
{
get { return _selectedStore; }
set {
_selectedStore = value;
SelectedStore.PropertyChanged += new PropertyChangedEventHandler(SelectedStore_PropertyChanged);
NotifyPropertyChanged("SelectedStore");
}
}
void SelectedStore_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
StoreNeedsSave = true;
}