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



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

    视图和模型的分离是ViewModel的主要职责之一。否则模型将被特定于视图的属性和数据格式污染。
  • ViewModel应该将Model包装为属性并将其暴露给视图,并且当被包装的ViewModel属性被视图修改时,它可以反过来调用模型特定的方法。
因此,不要将linq类直接绑定到视图,而是通过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;
    }

相关内容

  • 没有找到相关文章

最新更新