数据网格行添加事件

本文关键字:添加 事件 网格 数据网 数据 | 更新日期: 2023-09-27 17:51:14

我知道…这个问题被问了很多次……但总是用同样的答案"把你的逻辑放在视图模型中"。

但是在这个例子中,我必须把逻辑放在视图中,因为我必须在视图中测量每个数据网格的大小,每当其中一个的行计数发生变化时。问题是……在我的视图模型中,我不能访问数据网格,所以我不能测量任何东西。在我看来,我不能得到行数已经改变的响应。

有人得到了一个想法,我如何知道在视图中,一行被添加或删除在数据网格?顺便说一句,它是一个带有自定义模板的自定义数据网格。也许这能帮上忙?

数据网格行添加事件

有一个ObservableCollection连着DataGrid,对吧?你有一个ViewModel(包含了ObservableCollection)作为ViewDataContext。你可以在视图中订阅ObservableCollectionCollectionChanged事件(你可以从视图中访问你的ViewModel,因为它是View.DataContext)。

(this.DataContext as ViewModel).YourCollection
    .CollectionChanged += (s, e) => { /* logic */ };

它稍微违反了MVVM。如果这是一个完全自定义的控件,那么你已经从ObservableCollection接收到事件(因为你需要更新UI),所以你可以在那里处理这个。

我能想到的另一种方法是使用某种Mediator模式,例如MVVMLight中的Messenger