0

MVVMの最良の方法でこれを行う方法がよくわかりません...

基本的に、私のメインアプリは、TabPanel内のすべてのレコードを表示する検索ウィンドウを開きます。次に、レコードをダブルクリックすると、そのレコードを含む新しいタブが開きます。今、私はMVVMを維持しようとしていますが、人がレコードを削除したときにGUIタブアイテムを閉じる方法を一生理解できません(レコードがなくなった場合に開いたままにする理由)。

今それを行う方法を理解できる唯一の方法は、DeleteCommandのパラメーターとしてTabItemのインスタンスを渡すことです。これは、私には大したことではないように思えますが、私は一生理解できません。これを達成する方法。

4

2 に答える 2

3

真のMVVMの意味でこれを行う場合は、レコードをダブルクリックすると、舞台裏でレコードのコレクションにレコードが追加されます。そのレコードコレクションは、コントロールのタブのデータソースです。そのアイテムをリスト(通常はObservableCollection<T>)から削除するだけで、UIが更新され、タブが削除されます。

タブを表示するために現在どのアプローチを使用していますか?


編集(コメントに応じて):

それは「真の」MVVMではありません。タブが単なるレコード以上のものであるかどうかは関係ありません。これらの詳細を抽象化するビューモデルを作成してから、ビューモデルインスタンス(RecordViewModel、ReportViewModelなど)を監視可能なコレクションに配置してバインドする必要があります。datatemplatesを使用して、現在のタブがバインドされているビューモデルのタイプに基づいて、各タブのコンテンツに適切なビューをレンダリングします。

于 2010-11-27T02:07:01.930 に答える
1

Josh Smithは、MVVMがどのように機能するかを説明するすばらしい記事を書きました。サンプルアプリケーションは、実行したいことと非常によく似た処理を実行します。

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

Model-View-ViewModelデザインパターンを使用したWPFアプリ

于 2010-11-27T03:17:59.670 に答える