1

次の2つのシナリオを検討してください。

  • ユーザーがビューのボタンを押し(例:注文の履行)、ビューをすぐに更新したい(ボタンを無効にする、プログレスバーを追加するなど)
  • サービスレイヤーはビジネスイベントを発生させますが、これは最終的にビューに反映される必要があります(たとえば、製品が在庫切れになっている場合)。

どちらの場合も、ビューモデルを更新するために何らかのメカニズムXが合法的に必要です。MVVMを使用すると、ビューは、イベントハンドラーでビューモデルのプロパティを設定するか、コマンドバインディングを介して、またはその他のメカニズムを介してこれを行うことができます。

サービス層は、何らかのメカニズムYを使用してこれを行うことができます。たとえば、ビジネス/ドメインモデルでイベントを発生させたり、ビューモデルを操作するコマンドを作成したり、ビューモデルでメソッドを呼び出したりします。

実際、XYは同じメカニズム(またはパターン)である可能性があります。

これを行うのに良いものは何ですか、それはMVVMの精神を維持しますが、DRYですか?

4

1 に答える 1

1

MVVMフレームワークを選択し、それがサポートするパターンに従う必要があると思います。

一般に:

  • ボタンは、ICommandまたはMVVMフレームワークがサポートするいずれかを介して、ViewModelのFulfillOrderメソッドにフックされます。
  • 「CanFulfillOrder」ブールプロパティがフックアップされ、INotifyPropertyChangedを介してボタンが無効になります。これは、FulfillOrderメソッドまたは指定したイベントによってトリガーできます。プログレスバーの可視性にバインドすることもできます。
  • 別のプロパティは、進行状況バーにパーセンテージを提供し、それを適切に更新することができます

優れた汎用MVVMフレームワークはMVVMLightです。

より多くのパワーを探していて、より複雑な処理ができる場合は、Caliburnを試してください。

または、動的を使用して最先端のものを試したい場合は、私のフレームワークであるNoMvvmを試してください。

于 2011-08-28T21:31:57.913 に答える