WPF DataGrid如何在ItemsSource更新时获取

WPF DataGrid如何在ItemsSource更新时获取,wpf,events,datagridview,wpf-controls,wpfdatagrid,Wpf,Events,Datagridview,Wpf Controls,Wpfdatagrid,DataGrid的源更新时触发哪个事件?我尝试过DataContextChanged和SourceUpdate,但都没有成功 其实我需要一件简单的事情。我想,如果出现新行,请将GridView的滚动条向下滚动到底部,查看它是什么。如果在数据库本身添加内容时尝试刷新网格,则不会发生这种情况。与WPF相比,我更熟悉WinForms,但我认为没有神奇的方法可以让网格与数据库保持同步,而不必编写一些后台进程来不断检查数据库更改 如果您正在更新网格的实际数据源(例如收集),则将更新网格。为ItemsSou

DataGrid的源更新时触发哪个事件?我尝试过DataContextChanged和SourceUpdate,但都没有成功


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

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


如果您正在更新网格的实际数据源(例如收集),则将更新网格。

为ItemsSource绑定和handle TargetUpdated事件设置NotifyOnTargetUpdated=true。如果您有多个绑定,请查找DataTransfervenTargs属性,以确定目标是否为ItemsSource。

我也遇到了同样的问题,我通过这种方式进行管理

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

然后,您需要在事件处理程序中实现逻辑。对于我的部分,我使用了SelectionChange通知,它会引发每个事件Del/Add/Edit/Select 这工作做得很好

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

当你说“当新行进来时”,你是指底层数据源(数据库)还是DataGrid数据源?我是指GridView的ItemsSource。是的,我有一些集合,它通过ItemsSource与GridView绑定。实际上,与WinForms相比,WPF的优势之一是能够将网格绑定到数据集,并自动更新UI