如何在ICollectionView上使用INotifyPropertyChanged事件



我的场景如下:

我使用的是EF4和linq。我有一个绑定到ICollectionView的数据网格(因为我使用过滤),如下所示:

view = CollectionViewSource.GetDefaultView(lstOrdsRlsd);
                if (lstOrdsRlsd.Count > 0)
                {
                    dgRecords1.ItemsSource = view;
                }

其中lstOrdsRlsd是一个可观测集合。

我的问题是:

当数据库中发生更改时(无论是添加新行还是更改一条记录的某些属性等),我都需要刷新数据网格。

我试过datagrid.Items.Refresh(),但没用。在这种情况下,我可以使用INotifyPropertyChanged吗?有人能提供一些关于如何实现这一点的示例代码吗?

感谢

您可以尝试使用DbSet<>。当地财产。这是一个可观察的集合,包含您从数据库上下文中查询到的所有行。

public ObservableCollection<T> DbSet<T>.Local

因此,如果以后进行任何查询,并且返回更多行,则DbSet<>。本地集合将为您INotifyCollectionChanged。:)

因此,下一步是确保EF获取新行。你可以使用Daniel Hilgarth的任何答案来实现这一点。

数据库中的新行不会自动反映在应用程序中。您需要手动从数据库中请求新项目,并将它们添加到您的收藏中。

相关内容

  • 没有找到相关文章

最新更新