当集合中的项目发生更改时,Linq数据绑定更新

时间:2011-07-08 19:59:53

标签: wpf linq binding inotifypropertychanged

我希望在绑定到我的View的项目发生更改时更新数据库。我注意到PropertyChanged事件在linq类中触发,但是如何告诉我的viewmodel事情已经发生了变化? 我使用Linq类作为我的模型,所以我不必重新创建它,这是不好的做法?我知道我可以在我的Linq类中创建一个新属性true或false并从我的viewmodel中使用该属性,但这不会太高效,因为每次我需要从SQL更新类时都必须重做。 / p>

2 个答案:

答案 0 :(得分:0)

  • View和Model之间的分离是ViewModel的关键任务之一。否则,模型将受到视图特定属性和数据格式的污染。
  • ViewModel应该将Model作为属性包装并将它们公开给View,并且当View包含ViewModel属性时,它可以依次调用模型特定的方法。

因此,不要将linq类直接绑定到视图,而是通过ViewModel中的属性公开它们。就个别收集项目通知而言,您可以使用something

答案 1 :(得分:0)

只是为了让其他人知道我为这个场景做了什么。我确实尝试了anivas发布的链接并且它有效,但并不像我想出的解决方案那么容易。 我将所选项目绑定到我的modelView上的属性,因为它是唯一一个无论如何都可以由用户更改的属性。在我的属性的setter上,我为notifyProperty改变了一个处理程序。见下面的代码         private CustAccountLocation _selectedStore;

    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;
    }