3

Glenn Block と私は一緒に ViewModel パターンに取り組んできました。パターンに関連する最大の問題点を特定しようとしており、フレームワークのサポートを追加して問題を軽減することを目標としています。

今夜、Glenn は「View Model」を投稿しました – 映画、投票してください. 私たちはあなたから聞きたい。ViewModel パターン (Model-View-ViewModel または MVVM とも呼ばれます) を実装する際の最大の問題点について、ここに投稿 (および投票) してください。フレームワークがあなたの生活を楽にする方法を教えてください!

WPF と Silverlight の両方を検討しています。

では、ViewModel をより簡単にするために、フレームワークに何をしてほしいか教えてください。

4

4 に答える 4

5
  • オブジェクトの爆発(これで、モデルとビューモデルの両方ができました)。
  • モデルをビューモデルにマッピングし、その逆も同様です。

どちらも必要悪だと思いますが、悩みの種です。

于 2009-05-05T16:00:09.037 に答える
4

コレクション。

Model に他の Model オブジェクトのコレクションを持たせたいのですが、GUI を ViewModel オブジェクトのコレクションにバインドします。

ViewModel レイヤーにを作成ObservableCollection<TViewModel>し、Model レベル コレクションの各アイテムの ViewModel を手動で設定できます。それは問題なく動作します-プログラムの起動時。しかし、ユーザーが [追加] ボタンをクリックするとどうなるでしょうか? それとも削除ボタン?それとも上に移動/下に移動しますか? 等。

はい、ViewModel リストを Model リストと同期させるコードを書くことはできますが、多くの微妙なエッジ ケースがあり、すべての詳細を正しく取得するには多くの作業 (および多くのテスト) が必要です。これは一般的なシナリオであり、フレームワークに組み込む必要があります。(お願いします?)

于 2009-07-02T13:26:28.620 に答える
1

INotifyCollectionChanged は変更の範囲に関する通知をサポートしていますが、範囲の更新を投稿しようとすると、すべての WPF コレクション コントロールは範囲がサポートされていないという例外をスローします。これは、コンテナに 10 個のアイテムを追加すると、レイアウトが 10 回再評価されることを意味します。これは、複雑なコントロールではかなり遅くなります!

解決策は、SuspendNotifocations および ResumeNotifications メソッドを Observable コレクションに追加し、すべての WPF コントロールが範囲の更新を認識できるようにすることです (ユース ケース: サスペンド、アイテムの追加、再開、すべてのアイテムが一度に描画されます)。

于 2009-09-18T17:37:21.833 に答える
0

ViewModel クラスに作成するプロパティが多すぎます。少なくとも私が見たのは、アクセス/バインドしたい UI 要素の各プロパティに対して、ViewModel でプロパティを作成する必要があることです。これは、維持するにはコードが多すぎます。

于 2009-06-13T18:25:20.820 に答える