WPF DataGrid在ItemsSource更新时如何获取

时间:2009-07-10 00:06:25

标签: wpf events datagridview wpf-controls wpfdatagrid

当DataGrid的源更新时会触发哪个事件?我已经尝试过DataContextChanged和SourceUpdated,但它从未解决过。

其实我需要一件简单的事情。我想,如果有新行,请将GridView的滚动条向下滚动到底部以查看它是什么。

4 个答案:

答案 0 :(得分:27)

我有同样的问题,我这样管理

DataGrid myGrid = new DataGrid();
CollectionView myCollectionView = (CollectionView)CollectionViewSource.GetDefaultView(myGrid.Items);
((INotifyCollectionChanged)myCollectionView).CollectionChanged += new NotifyCollectionChangedEventHandler(DataGrid_CollectionChanged);

然后,您需要在事件处理程序DataGrid_CollectionChanged中实现逻辑。

答案 1 :(得分:8)

为ItemsSource绑定设置NotifyOnTargetUpdated = true并处理TargetUpdated事件。如果您有多个绑定,则查找DataTransferEventArgs属性以查明目标是否为ItemsSource。

答案 2 :(得分:3)

如果您尝试在将某些内容添加到数据库本身时刷新网格,则不会发生这种情况。我比WinF更熟悉WinForms,但我假设没有一种神奇的方法可以让网格与数据库保持同步,而无需编写一些不断检查数据库更改的后台进程。

如果要更新网格的实际数据源(例如Collection),则会更新网格。

答案 3 :(得分:2)

就我而言,我使用了SelectionChange通知,它会引发每个事件Del / Add / Edit / Select 它的工作非常好

private void dataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    Console.WriteLine("hi");
}