Josh Smith の例のようなタブを使用する MVVM アプリケーションがあります。各 TabItem (View) は、個々の ViewModel を表します。
一部のビューには、ObservableCollection にバインドされた DataGrid があります。これまでのところ、すべて正常に動作しています。しかし、セルに入力するなどしてデータ グリッドの編集を開始し、Enter キーを押して変更を送信する前に別のタブに切り替えると、前のタブに戻ることができません。タブのコンテンツは変更されますが、タブ項目は選択されていません。どうにかしてデータグリッドの編集モードを停止する必要があると思いますが、MVVM アプリでそれを行うにはどうすればよいですか? ICollectionViewSource の場合、私はこのようにできることを知っています
IEditableCollectionView list = (ListCollectionView)this.ItemsView;
if (list.IsEditingItem) list.CommitEdit();
if (list.IsAddingNew) list.CommitNew();
しかし、ObservableCollection に対してこれを行うことはできません。バインディングを観察可能なコレクションのビューに変更する必要がありますか、それとも別の方法がありますか?