如何在ICollectionView上使用INotifyPropertyChanged事件?

时间:2013-02-07 12:42:37

标签: c# wpf entity-framework inotifypropertychanged

我的情景如下:

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

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

其中lstOrdsRlsd是一个observablecollection。

我的问题是:

我需要在数据库中更改某些内容时刷新数据网格(无论是添加新行还是更改某个记录的某些属性等)。

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

由于

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您可以尝试使用DbSet<> .Local属性。这是一个可观察的集合,其中包含您从数据库上下文中查询的所有行。

public ObservableCollection<T> DbSet<T>.Local

因此,如果您稍后再进行任何查询,并且会返回更多行,则DbSet&lt;&gt; .Local集合将为您提供INotifyCollectionChanged。 :)

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