2016-04-29 27 views
1

私はモデルビュービューモデルを理解しようとしています。 私はYear、Project、Humanというクラスを持っています。 毎年、その年のプロジェクトに関するリストが含まれており、すべてのプロジェクトには、そのプロジェクトで作業している人間のリストが含まれています。複数の階層を持つwpf viewmodel

このすべてのデータの概要を表示したいとします。たぶん異なる年を示すTabControl、そしてTabItem内の関連するプロジェクトとそのメンバーのリスト

今年はModelViewYearを作成し、関連付けられたModelViewHumanのリストを含む関連ModelViewProjectsのリストを含む必要がありますか?

これは完全に間違っていますか?データを表すModelViewTabitemだけが必要ですか?

+1

あなたはすでに何を試しましたか? –

+0

最初のバージョンを試しましたが、同じ情報を複数回保存することに苦労しました(たとえば、プロジェクトには人間のリストが含まれ、viemodelprojectにはビューモデルのリストが含まれています) – Moritz

+0

小さなものすべてに対してビューモデルを作成しないでください。このビュー用に1つだけ持っています(ProjectsViewModelとしましょう)。コレクション内のすべてのプロジェクトタイプには、Year(実際にカスタムタイプが必要な場合)とHumanのプロパティがあり、必要に応じて表示できます。 – icebat

答えて

0

あなたの実際の要件は私には分かりません。

年、プロジェクト、ヒューマンデータクラスですか?私の理解によれば、ユーザーはリスト項目をクリックし、新しいリストが表示され、プロジェクトが入力され、ユーザーが特定のプロジェクトをクリックすると、人間のデータで新しいリストが作成されます。

はいこれはMVVMモデルでは簡単に実行できます。最初に、3つのリストビューを含むビューを作成し、必要に応じて各リストビューの可視性を設定します。 MVVMを使用すると、これらのリストビューのitemsourceが対応するビューのビューモデル内の対応するObservableCollectionにバインドされます。

ObservableCollectionをデータソースとして使用して、親リストでアイテムが選択されているときに各リストビューの表示をバインドできます。

あなたは同じことを理解していることを願っています。

+0

はい、データクラスです。私は毎年、関連する人間のプロジェクトリストを含むタブーアイテムとして出て欲しかった。 したがって、1つのModelViewXYクラスを作成し、そこに異なるoberservablecollectionsを保持しますか? – Moritz

+0

いいえ、あなたは1つのビューモデル自体の中ですべてを行うことはできません。ビューと対応するビューモデルを作成します。ビューモデル内では、上記のロジックと同じロジックを使用して、必要に応じてリストやテーブル、またはデータグリッドを設定し、そこにあるすべてのソースを定義することができます。 – ViVi

+1

右、私はこれを意味しました;) – Moritz

関連する問題