数据网格行添加事件
本文关键字:添加 事件 网格 数据网 数据 | 更新日期: 2023-09-27 17:51:14
我知道…这个问题被问了很多次……但总是用同样的答案"把你的逻辑放在视图模型中"。
但是在这个例子中,我必须把逻辑放在视图中,因为我必须在视图中测量每个数据网格的大小,每当其中一个的行计数发生变化时。问题是……在我的视图模型中,我不能访问数据网格,所以我不能测量任何东西。在我看来,我不能得到行数已经改变的响应。
有人得到了一个想法,我如何知道在视图中,一行被添加或删除在数据网格?顺便说一句,它是一个带有自定义模板的自定义数据网格。也许这能帮上忙?
有一个ObservableCollection
连着DataGrid
,对吧?你有一个ViewModel
(包含了ObservableCollection
)作为View
的DataContext
。你可以在视图中订阅ObservableCollection
的CollectionChanged
事件(你可以从视图中访问你的ViewModel,因为它是View.DataContext
)。
。
(this.DataContext as ViewModel).YourCollection
.CollectionChanged += (s, e) => { /* logic */ };
它稍微违反了MVVM。如果这是一个完全自定义的控件,那么你已经从ObservableCollection
接收到事件(因为你需要更新UI),所以你可以在那里处理这个。
我能想到的另一种方法是使用某种Mediator
模式,例如MVVMLight中的Messenger
。