8

Silverlight 3.0 で .NET RIA Services と MVVM を使用する場合、RIA Services の Metadata タイプと MVVM パターンの ViewModel に違いはありますか? これらは同じものですか、それとも別々に保管する必要がありますか?

メタデータ型は、部分エンティティ クラスに対する封印された内部クラスです。そこには適切な分離があるようには見えませんが、メタデータ型は、ViewModel のように見える Validation の属性で装飾することもできます。

いろいろと調べてみましたが、これについて詳しく書かれているものはありませんでした。

4

2 に答える 2

11

ChuckJ に同意します。通常、DomainContext はビュー モデルの一部を形成します。たとえば、製品カタログを検索できる検索ページがあるとします。これが私が物事を構造化する方法です:

サーバー上:

class Catalog : DomainService {
    IQueryable<Product> GetProducts(string keyword) { ... }
}

生成された DomainContext:

class Catalog : DomainContext {
    EntityList<Product> Products { get; }
    void LoadProducts(string keyword);
}

私が書くビューモデル:

class SearchViewModel {
    Catalog _catalog = new Catalog();

    public IEnumerable<Product> Results {
        get { return _catalog.Products; }
    }

    public void Search(string keyword) {
        _catalog.Products.Clear();
        _catalog.LoadProducts(keyword);
    }
}

そして最後に、xaml で、UserControl の DataContext を SearchViewModel のインスタンスに設定し、ItemsControl を Results プロパティにバインドします。選択した ViewModel パターンを使用して、ボタンのクリックを検索にバインドします (これは事実上、SearchViewModel が公開するコマンドです)。個人的には、次のようにSilverlight.FXで作業したことが好きです。

<Button Content="Search"
  fxui:Interaction.ClickAction="$model.Search(keywordTextBox.Text)" />

そして最初にここに示されているように。

Chuck が言及しているように、ビュー モデルには実際に他の状態がある可能性があります。選択した製品の詳細。

それが役立つことを願っています! これについては、近いうちにブログで詳しく説明します。

于 2009-04-18T20:33:57.257 に答える
1

RIA サービスのデータ コンテキストは、データ バインディングをネイティブにサポートしているため、MVVM パターンで ViewModel の役割を果たすように設計されていますが、ドキュメントではその用語を使用していません。しかし、それは本当に依存します。コマンドやその他のビュー関連の状態など、RIA データ コンテキストが提供する状態よりも、ビュー モデルに状態が必要になる可能性があります。あなたがやりたいことは、RIA サービスのデータ コンテキストをビュー モデルの一部として使用することだと思います。

于 2009-04-15T19:13:19.943 に答える