0

Prism.v4を使用して、WPFで軽量のCRM(顧客、注文、リソースなど)アプリケーションを開発することを計画しています。すでにoutlookbarのようなユーザーコントロールを作成し、Microsoftリボンを使用しています。追加のリージョンが存在しますが、これらはこのシナリオに不可欠なリージョンです。

さらに、すべてのモデル、リポジトリ、インターフェイスなどを備えたインフラストラクチャdllが存在します。

ブレーンストーミングを行った後、次の事実を思いつきました。

customermoduleは、ordersmoduleについて知る必要はありません(ordersmoduleは顧客モデルを知っています)。ただし、特定の顧客に属するすべての注文をユーザーが快適にロードできるようにする必要があります。したがって、customer-detail-mode(customerribbontabとcustomeroutlookbarアイテムが挿入される)では、リボンボタンで「customerdetail」から「thiscustomersorders」に移動する必要があります。

問題は、緩い結合を壊さずにこれを達成する方法ですか?

私たちのアプローチ:customer-ribbontabに、他のモジュールが顧客と対話するための領域を提供します。ordermoduleは(データモデルの1:n関係に基づいて)顧客について確実に知っているためです。

前もって感謝します

4

1 に答える 1

0

通常、顧客の注文を開くボタンは、注文モジュールではなく、顧客モジュールから取得する必要があると思います。このボタンをクリックすると...

  • /ShowCustomerOrders?CustID=1234 のような URI でナビゲーション リクエストを発生させます。Orders モジュールがこれを理解して取得します。
  • 「CustomerOrders」などの名前のリージョンを含むビューを開き、顧客 ID をリージョン コンテキストに挿入します。注文モジュールは、その顧客注文ビューをビュー ディスカバリーに登録します。

これらのオプションはいずれも、OrderModule.dll への参照を追加する必要がないため、結合は追加されません。ただし、Orders モジュールが見つからない場合、ナビゲーションは何もしないか、ビューが空になります。

注文モジュールが存在しない場合にボタンが表示されないようにする場合は、代わりに注文モジュールを取得して、ビューの検出を介して顧客のリボンにボタンを追加することができます。次に、地域のコンテキストから現在の顧客の顧客 ID を取得する必要があります。これにより、クリックしたときに正しい顧客注文ビューを開くことができる十分な情報が得られます。

于 2012-06-13T17:26:03.337 に答える