5

新しいmvvm-wpf-applicationを起動するとき、私は通常mvvm-lightを起動時に含めます。私のアプリケーションが成長するまでうまく動作します。MvvmLightの標準ViewModelLocatorはAntiPatternですか?それをどのように緩和するか?

いくつかの点では、ViewModelLocatorが巨大になります(すべての種類のChildViewodelsの多くのViewModel)。さらに、ウサギの穴の下に、私は同じビューモデルの複数の異なるインスタンスが必要です。 (例えば、同じスクリーン上で対話したいアイテムのリストの場合)。これは、闘争が始まるところです。どうすればそれをうまく処理し、一貫してコードをテスト可能に保つことができますか?

私はViewModel-firstに移動し、すべてのViewModelの抽象ファクトリを作成すると、ViewModelLocatorを取り除きたいのですが(antipatternはServiceLocatorのような感じですか?)

答えて

0

ViewModelLocatorは、Inversion of Control(IoC)に使用されるナビゲーションバスのファンシーな名前です。これは新しい技術であるように見えますが、ナビゲーションバスは実際には異なる方法でサービスバスを使用しています。静的な(VBで共有されている)コンテナがある場合は、アンチパターンではありません。 ViewModelでコンテナを渡している場合は、アンチパターンが表示されます。

MVVMに留意すべき点は多目的なデザインパターンであり、さまざまな方法で拡張できることです。大規模プロジェクトの最適なソリューションは、コンポーネント設計(アプリケーションの各機能が独自の名前空間またはプロジェクトにある設計)です。

設計図がそうのように見えることがあります。

  • カスタマー
    • モデルを
    • のviewmodels
    • サービス
  • 受注
    • モデル
    • のviewmodels
    • サービス

等... それは本当に開発者の風味にダウンしています。あなたのデザインが一貫している限り。

さらに読む: ののViewModelLocatorの検索をよりよく理解するために、 EventAggregatorをよりよく理解するために、メッセージバスを検索してください。

関連する問題