0

私のシナリオは以下のとおりです。

私はEF4を使用しており、linqを使用しています。以下のように、ICollectionViewにバインドされたデータグリッドがあります(フィルタリングを使用しているため)。

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

ここで、lstOrdsRlsdはobservablecollectionです。

私の問題は:

データベースで何かが変更されたとき(新しい行を追加するか、1つのレコードのプロパティを変更するかなど)、データグリッドを更新する必要があります。

うまくいかなかったものを試しdatagrid.Items.Refresh()てみました。この場合、INotifyPropertyChangedを使用できますか?誰かがこれを実装する方法についていくつかのサンプルコードを与えることができますか?

ありがとう

4

2 に答える 2

0

データベースの新しい行は、アプリケーションに自動的に反映されません。データベースから新しいアイテムを手動でリクエストし、コレクションに追加する必要があります。

于 2013-02-07T12:46:38.370 に答える
0

DbSet<>.Local プロパティを使用してみることができます。これは、データベース コンテキストからクエリを実行したすべての行を含む監視可能なコレクションです。

public ObservableCollection<T> DbSet<T>.Local

したがって、後でクエリを実行してさらに行が返された場合、DbSet<>.Local コレクションは INotifyCollectionChanged を実行します。:)

したがって、次のステップは、EF が新しい行をフェッチすることを確認することです。Daniel Hilgarth の回答から何でも使用して、それを実装できます。

于 2013-02-07T13:07:36.453 に答える