2016-03-29 11 views
0

私は数百のプロパティを持つ作業ビューモデルを持っていて、それぞれが1つ以上のクライアントビューによって積極的に消費されています。これは技術的にトラフィックディレクターとしての目的を果たしますが、私の心配はレガシーメンテナンスが悪夢になることです。私はこれを複数の余分なクラスに分割し、VM内のそれぞれについてシングルトンを実行しようとしましたが、フロントエンドの開発者は、どのインスタンスオブジェクトが特定のターゲットプロパティにつながるかについて頭を掻きません。私は部分的なクラスファイルにVMを分割しようとしました。これはコマンドの実装には特に有効ですが、プロパティではこれは現実的ではありません(VM単体では数百、または数千ものコードファイルがあります)。この方向に進むと、F12キーにも依存してしまいます)。 MVVM(またはMVC)を使用して誰かがこの問題に遭遇しましたか?私はリバティーザーの助けなしにこれらのプロパティ定義を管理する方法が必要です!MVVM:非常に大きなビューモデルの扱い

+2

一般に、MVVMでは、ビューごとに1つのビューモデルがあります。 1つのビューモデルで複数のビューをサポートしているようです。あなたのビューモデルが非常に多くのプロパティを持っている理由かもしれませんか、何か不足していますか? – devuxer

+0

私はビューを管理するためにマシン状態を使用しています。このUIは、特に、約20のビューを持ち、すべて同じデータソースから読み込みます。彼らはすべて同じVMを共有すべきであることは当然のようでした。おそらく私は間違っている。 – Jace

+0

あなたの質問はおそらく[codereview.stackexchange.com](http://codereview.stackexchange.com/) –

答えて

3

通常、ビューごとに1つのViewModelクラスがあります。ビューは、Window、UserControl、またはPageになります。 1つのViewModelをアプリケーション全体のDataContextとして使用することは可能ですが、その考えは私を驚かせます。 それぞれのビューで独自のViewModelインスタンスを解決できます。

あなたのアプリケーション私は、各ビューは、基礎となるモデルを更新AND/OR基礎となるモデルへの変更を監視し、独自のViewModelを持っているだろうと思っているだろう

+0

アプリケーションのコンポーネントごとに異なるVMを持つことは決して考えませんでした。ビューAのDataContextをビューBからどのように更新するのですか? – Jace

+0

どのように関連しているかによって異なります。 PrismのEventAggregatorのようなパブリッシュ/サブスクライブタイプのメッセージングシステムを使うのが一番良いかもしれません。 –

+0

複数のビューを共有するDataContextオブジェクトを共有することの利点はあまりにも大きいです。中間のどこかで幸せなメディアが必要です。ご意見をいただきありがとうございます。 – Jace

0

のソースコードおよびアーキテクチャを見ずに助言することは困難です。モデルがドメインオブジェクトである。ドメインオブジェクトは、すべての四肢(DB、サービスなど)を抽象化するアーキテクチャの中核をなすものです。モデルの一部のプロパティが値を変更した場合、モデルが変更を通知すると(たとえば、永続性が成功した後など)、変更を監視しているすべてのViewModelが変更の更新を行います。

関連する問題