DataGrid行添加了事件

时间:2013-01-09 10:52:47

标签: c# wpf mvvm view datagrid

我知道......这个问题被问了很多......但总是有相同的答案“把你的逻辑放在视图模型中”。

但是在这个例子中我必须将逻辑放在视图中,因为每次其中一个数据网格的行数发生变化时,我必须在视图中测量每个数据网格的大小。问题是...在我的viewmodel中我无法访问datagrid,所以我无法测量任何东西。在我看来,我无法得到行数已经改变的回复。

有人知道我在视图中知道在数据网格中添加或删除了一行吗? 它是一个带有customtemplate btw的自定义数据网格。也许这会以某种方式提供帮助?

1 个答案:

答案 0 :(得分:0)

ObservableCollection绑定了DataGrid,对吧?并且您有ViewModel(其中包含ObservableCollection)作为DataContext的{​​{1}}。您可以在视图中订阅View的{​​{1}}事件(您可以从视图中访问ViewModel,因为它是CollectionChanged)。

E.g。

ObservableCollection

它略微违反了MVVM。如果这是一个完全自定义的控件,那么您已经收到View.DataContext中的事件(因为您需要更新UI),因此您可以在那里处理。

我能想到的另一种方法是使用某种(this.DataContext as ViewModel).YourCollection .CollectionChanged += (s, e) => { /* logic */ }; 模式,例如MVVMLight中的ObservableCollection