2011-01-31 13 views
2

私は、IsSynchronizedWithCurrentItemがtrueに設定されたWPF DataGridを持ち、ObservableCollectionにバインドしています。 ICollectionView.MoveCurrentTo *メソッドを使用して現在のアイテムを変更すると、DataGridはそれに応じて現在のアイテムを変更します。WPFデータグリッドの現在の項目を確認する方法はありますか?

問題は、現在の項目が現在表示されていない場合、DataGridは現在の項目を表示にスクロールしないことです。これをどうやって解決するのですか?

答えて

4

ICollectionView.CurrentChangedを処理し、それを達成するためにDataGrid.ScrollIntoView(object item)を呼び出すことができます。

+0

これについてさらに詳しく説明できますか?私のメインウィンドウにはcollectionviewsourceオブジェクトが設定されています。しかし、私のビューモデルは、データグリッド上のselecteditemの追加/編集/削除の作業を処理しています。だから、私はここからのデータグリッドオブジェクトやcvsへのアクセス権を持っていません。 –

+0

@AndrewTruckle:コレクションビューは、ビューモデルにアクセスする必要がある場合、ビューモデルに配置するものです。それ以外には、あなたがどこからでも得ることができるあなたのコレクションに関連付けられているデフォルトビューがあります。ビューで作成したものがデフォルトになっているかどうか、またはデフォルトとして登録できるかどうかは不明です。 –

+0

私は背後にあるコードでこれを行うことができました: 'ます。private void gridStudents_SelectionChanged(オブジェクト送信者、SelectionChangedEventArgs E) { (gridStudents.SelectedItem = nullを!)もし gridStudents.ScrollIntoView(gridStudents.SelectedItem)。 } ' –

関連する問題