2009-07-10 25 views
14

DataGridのソースが更新されているときにどのイベントが発生しますか?私はDataContextChangedとSourceUpdatedを試しましたが、うまくいかなかったのです。WPF DataGrid ItemsSourceの更新時の取得方法

実際には簡単なことが必要です。私は、新しい行がある場合は、それが何であるかを確認するために、GridViewのスクロールバーを下にスクロールダウンします。

+0

だ を選択基礎となるデータソース(データベース)またはDataGridデータソース –

+0

私はGridViewのItemsSourceを意味しました。 – Agzam

答えて

27

私は同じ問題を抱えていたし、私はあなたが、その後、イベントハンドラDataGrid_CollectionChangedにロジックを実装する必要があり、それをこのよう

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

を管理します。各イベントデルを上げる私はのSelectionChange通知使ってきた私の部分については

3

あなたが何かをデータベース自体に追加されたときに、グリッドのリフレッシュを持つようにしようとしている場合、それが起こることはないだろう。私はWPFよりもWinFormsに精通していますが、データベースの変更を継続的にチェックするバックグラウンドプロセスを記述することなく、グリッドをデータベースと同期させる魔法の方法はないと仮定しています。

あなたは、グリッドを更新する、グリッド(例:コレクション)の実際のデータソースを更新している場合。

+0

はい私はいくつかのコレクションを持っており、ItemsSourceを介してGridViewにバインドされています。 – Agzam

+0

実際、WPF over WinFormsの利点の1つは、グリッドをデータセットにバインドし、UIを自動的に更新する機能です –

7

ItemsSourceバインディングとTargetUpdatedイベントの処理にNotifyOnTargetUpdated = trueを設定します。複数のバインディングがある場合は、DataTransferEventArgsプロパティを検索して、ターゲットがItemsSourceかどうかを調べます。

2

/追加/編集/あなたが「新しい行がに来るとき」あなたに意味するかと言うと、それは仕事非常によく

private void dataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    Console.WriteLine("hi"); 
} 
関連する問題