2010-11-27 10 views
0

を削除されたときに、私は最高のMVVMの方法でこれを行う方法は本当にわからないタブを閉じる...MVVM - レコードが

は基本的に、私のメインのアプリは内のすべてのレコードを示して検索ウィンドウを開きますTabPanel。レコードがダブルクリックされると、そのレコードで新しいタブが開きます。今、MVVMを維持しようとしていますが、人がレコードを削除したときにGUIテーブルを閉じる方法を理解できません。

今私はそれを行う方法を理解する唯一の方法は、私に大きなno-noのように見えるDeleteCommandのパラメータとしてTabItemのインスタンスを渡すことですが、私は人生にとって不可能です私のこれを達成する方法を見つけ出す。

答えて

3

本当のMVVMの意味でこれを行うつもりなら、レコードをダブルクリックすると、舞台裏でレコードのコレクションにレコードが追加されます。そのレコードコレクションは、コントロール内のタブのデータソースです。リストからその項目を削除するだけで(通常ObservableCollection<T>)、UIが更新され、タブが削除されます。

タブを表示するために現在どの方法を使用していますか?


編集(応答でコメントするには):

"真" MVVMではありません。タブが単なるレコード以上のものであるかどうかは関係ありません。それらの詳細を抽象化したView Modelを作成してから、View Modelインスタンス(RecordViewModel、ReportViewModelなど)を観測可能なコレクションに入れてバインドするだけです。現在のタブがバインドされているビューモデルのタイプに基づいて、各タブのコンテンツの正しいビューをレンダリングするには、datatemplatesを使用します。

+0

単純にTabItemを作成し、それをTabCollectionに追加します。タブは単なる記録以上のものになる可能性があるので、私はこれを行います。レポート(rdlc)を含むタブ、またはSearchAllViewを含むタブなどがあります。 –

1

ジョシュ・スミスは、MVVMの仕組みを記述した素晴らしい記事を書いています。サンプルアプリケーションは、あなたがやりたいことと非常によく似た何かを行います。

アプリケーションは、1つ以上の作業領域を表示するTabControlを表示します。ワークスペース領域には、2種類のアイテムが表示されます。タブ項目は閉じることができます。見て、私はこれがあなたの問題を解決すると確信しています。

WPF Apps With The Model-View-ViewModel Design Pattern