0

WCF Ria Services と MVVM デザイン パターンを使用して Silverlight アプリを作成したいと考えています。

アプリのメイン ページは、「シェル」と、相互にリンクされたさまざまな外観 (形状/サイズ/プロパティ) の多数 (数十または数百) のオブジェクト (一種のグラフを形成) で構成されます。

これらのアイテムはマウスでドラッグできる必要があり、現在の位置/状態をバックエンド データベースに保存する必要があります。

これを実現する最善の方法は、表示されるアイテムごとに小さな ViewModel と View を用意し、すべての重要なプロパティを ViewModel に入れ、これらすべての View を何らかの方法でメインの「シェル」に表示することだと思います。

ただし、これをどのように正確に達成できるかはわかりません。MVVM Light の使用を検討しましたが、似たような例が見つかりませんでした。

これをどのように行うことができるかについて、誰かがいくつかの例やアイデアを教えてもらえますか?

4

3 に答える 3

3

「ハンマーしか持っていないときは、すべてが釘のように見えます」 :)

MVVM は、あなたが説明したようなグラフィックを多用する状況を管理するようには設計されていません。高度な概念を柔軟につなぎ合わせる接着剤です。MVVM を使用すると、パフォーマンスに影響を与えるオーバーヘッドが追加されます(たとえば、バインディングはバックグラウンドでリフレクションを使用します)。関係するオブジェクトが多いほど、影響は大きくなります。

私が提案できる最良の出発点は、サード パーティのコントロール (カスタム コントロール/コンテナーなど) から必要なものを想像し、実際にまだ存在しない場合は、サード パーティのカスタム コントロールであるかのように構築することです。

実際には、カスタム コントロールが MVVM に基づいていることはめったにないことがわかります。パフォーマンス上の理由から、単に「必要ないことが多い」という理由だけではありません。それらは、外部インターフェイスのMVVM 互換プロパティを公開する可能性がありますが、低レベルの内部は公開しません。

MVVM は比較的高度な手法です。すべてに実装する必要があるとは思わないでください。

于 2012-08-01T07:30:30.677 に答える
0

MVVM に続いて、次の操作を行います。

  1. モデル - 画面上の形状の座標の取得と永続化を担当するモデル オブジェクトを作成します。
  2. ビュー モデル - フェッチと永続化モデル オブジェクトを開始する 1 つのビュー モデル。
  3. ビュー - あなたの場合、ほとんどの作業を行う場所です。Canvas パネルで ItemsControl に基づいてカスタム コントロールを作成します。カスタム コントロールは、ItemsSource でモデル オブジェクトのコレクションを渡し、コンテナーをドラッグ アンド ドロップし、ユーザーがコンテナーをどこかにドロップしたときにビュー モデル コマンドを呼び出すことができるようにする必要があります。
于 2012-08-01T08:56:09.140 に答える
0

Telerik コントロール、特に radTileView を見てください。これには、探している機能があるようです。また、タイルの位置をデータベースに保存できる永続化フレームワークもあります。

于 2012-08-07T16:03:22.800 に答える