当DataGrid的源更新时会触发哪个事件?我已经尝试过DataContextChanged和SourceUpdated,但它从未解决过。
其实我需要一件简单的事情。我想,如果有新行,请将GridView的滚动条向下滚动到底部以查看它是什么。
答案 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");
}