6

モデルに INotifyProperyChanged や INotifyCollectionChanged などの UI 固有のものを追加したり、さまざまなイベントを大量に作成したり、さまざまなイベントを作成したりせずに、モデルの変更をビュー モデルに通知する方法がわかりません。それらはUI固有のものであり、モデルから離れるべきです。

それ以外の場合は、すべてが最新であることを確認するために、ビュー モデル内のすべてのビジネス ロジックを複製する必要があります。

私のモデルにあるトリッキーなものの 1 つは、"Category" クラスのプロパティです。これはツリー構造と考えることができ、プロパティはすべてリーフノードの子孫です。このモデルでは、すべての子を介してプロパティがその場で再帰的に生成されますが、これはすべて問題ありません。ただし、ビューモデルはそのプロパティにバインドする必要があり、いつ変更されるかを知る必要があります。ビューモデルに対応するようにモデルを変更する必要がありますか? 私がそうすると、ビューモデルはこの時点で実際には何もしません。モデルは必要な変更の通知をすべて発生させ、ビューはモデルに直接バインドできます。また、モデルがソースを持っていないものである場合、どうすればこれを回避できますか?

4

1 に答える 1

7

私はそれに同意せず、INotifyPropertyChangedUIINotifyCollectionChanged固有です。それらは、特定の UI スタックに関連付けられていない名前空間とアセンブリにあります。そのため、私は通常、そのような動作をシステムのできるだけ低い位置 (通常はデータ層) に配置します。

そのレベルに置きたくない何らかの理由がある場合は、それで問題ありません。サービスやUIレイヤーなどの上位レベルに配置できます。ただし、データ構造へのすべての変更がそのレイヤーでも発生することを確認する必要があります。

于 2009-05-23T07:15:04.883 に答える