0

Windows 8 アプリケーションを作成しています (ただし、Xaml を使用している人なら誰でも助けてくれると思います)。基本的には、製品のリストが表示されたページで、製品をクリックすると詳細ページが開きます。

私の構成ルートでは、最初のページのビュー モデルを解決し、データ コンテキストを適切に設定しますが、ユーザーが製品を選択したときにビュー モデルをページ 2 に渡すためのベスト プラクティスが何であるかはわかりません。

私が知る限り、次のオプションがあります:-

  • 最初のビューモデルには、.create(product) メソッドを使用してページ 2 のビュー モデルを作成できる抽象ファクトリが必要です。これは、最初のビュー モデル コンストラクターに渡されます。
  • 2 番目のビュー モデルに製品プロパティを持つインターフェイスを実装して、プロパティ インジェクションを使用できるようにし、2 番目のビュー モデルをパラメーターとして最初のビューモデルに渡します。
  • 多くの人がアンチパターンと見なしていることを知っているサービスロケーターを作成します。

私は少し途方に暮れていますが、抽象ファクトリが正しい方法であると思います。オブジェクト グラフが実際にはこれ (製品 -> ステップ -> 命令) であるため、これを正しく取得したいと考えています。作業にはかなりの時間がかかる可能性がありますが、基本的には、ビュー モデルが抽象ファクトリ ルートをたどると、3 つの抽象ファクトリと、製品の初期リストを取得するサービスが必要になることを意味します (そして、これは与えられたコードの匂いですか?いくつのパラメータがあります!)。

4

2 に答える 2

0

実行時に(コードから)ビューモデルを解決したい状況では、ファクトリが最適です。

簡単にするために、DIフレームワークの使用も検討します。WinRT にはあまり多くないと思いますが、autofacは Metro で動作するはずです。

于 2012-04-30T11:18:23.943 に答える
0

何か大きなものを構築している場合は、依存性注入がその方法になるかもしれません。個人的には、通常、Navigate() 呼び出しでパラメーターを渡し、OnNavigatedTo ハンドラーでこれらのパラメーターを使用してビュー モデルを初期化するだけです。

于 2012-04-30T16:33:17.497 に答える