私はMVPパターンに従ってWinformsMDIアプリケーションを設計していますが、アプリケーションのさまざまな部分間の通信に関連するいくつかの問題で立ち往生しています。
このアプリケーションの簡単な図を次に示します。1-左側にツリービュー2-中央に描画コンポーネント3-右側に「プロパティ」フォーム。これらの3つの部分は、MVPトライアドで管理されます(実際にはそうではありませんが、モデルはすべてのトライアドに共通です)
ツリービューのノードをクリックすると、図面コンポーネントで対応する選択されたオブジェクトの図面が表示され、プロパティフォームでこの選択されたオブジェクトに対応するいくつかのプロパティが表示されます。
私の基本的な質問は次のとおりです。a)「選択したオブジェクト」の情報をどこに保存するか。b)「選択したオブジェクト」が変更されたことを図面コンポーネントとプロパティフォームに警告するにはどうすればよいですか?
私はいくつかの解決策を想像し始めましたが、私はかなり不幸です。
モデルに「選択したオブジェクト」を入れて、オブザーバーの同期を実行することは購入しません。「選択したオブジェクト」はモデルに属していません
したがって、この情報をプレゼンターに格納すると思います。Treeviewプレゼンターに「選択したオブジェクト」を配置すると、描画コンポーネントのプレゼンターとプロパティフォームのプレゼンターの両方が、ツリービュープレゼンターの参照を保持して取得する必要があるようです。この情報。
それはプレゼンター間のいくつかの結合を作成します、そして私も好きではありません。
だから私は他のアイデアやコメントを探しています。御時間ありがとうございます。