2017-05-13 1 views
1

私はMVVMパターンを、次の午前、私のビューアセンブリとのviewmodels Solution.UserInterface Solution.BusinessLogicアセンブリで持っています。私の知る限りでは、のviewmodelsのviewmodelsへの参照を保持する必要がありビュービューについて何も知らないはずです。しかし、私が私のカスタムを開こうとするとどうすればいいですかからからViewModelソリューション。ビジネスロジック? (たとえば、新しい項目の挿入ウィンドウ)。ビューへの参照を追加して循環依存を引き起こすことになるため、できません。この問題を解決するには?viewmodelからカスタムウィンドウを表示するにはどうすれば両方とも別々のアセンブリにありますか?

+0

可能な複製(http://stackoverflow.com/questions/25845689/opening-new-window-in- mvvm-wpf) – ASh

答えて

1

私はあなたがここでいくつかのものを混ぜていると思います。 MVVMには、Model、View、ViewModelという3つの部分があります。ビューはデータを表し、ViewModelにバインドされています。これらは通常、のSolution.UserInterfaceのような同じユーザーインターフェイスアセンブリ内に存在します。ビューファーストのアプローチでは、ViewModelはに関連付けられたビューについて何も知らない - これは正しい。しかし、それは簡単にと一緒に働くことができます。他のViewModelにバインドされた新しいウィンドウを表示するのが好きです。

モデルは、ビジネスロジックが存在する場所です。これは他のアセンブリでも可能です。 ViewModelはビジネスオブジェクトへの参照を保持し、関連するViewに読み込み可能な形式で表示させるために別の形式に変換します。

も明確化のため、この質問を参照してください:[MVVM WPFで新しいウィンドウを開く]の Should I implement business logic on a Model or a ViewModel

+0

View User InterfaceおよびViewModel/Modelはビジネスロジックではありませんか。なぜユーザーインターフェース層にビジネスロジックが存在するのですか? – OpenMinded

+1

いいえ、MVVMでは、ビューのDataContextとしてViewModelが使用され、コントロールをプロパティにバインドできます。これはUIレイヤーで行われます。 ViewModelは、ビジネスロジックレイヤーにあるモデルからデータを取得します。 MVVMの詳細についてはhttps://msdn.microsoft.com/en-us/library/hh848246.aspxをご覧ください。 – Raziel

+1

@OpenMindedもしこれがあなたにとって有益だったら、それを受け入れられた答えとしてマークしたらうれしいでしょう。 – Raziel

関連する問題