在 Silverlight 3.0 中结合 .NET RIA 服务和 MVVM

2023-12-22

在 Silverlight 3.0 中使用 .NET RIA 服务和 MVVM 时,RIA 服务中的元数据类型与 MVVM 模式中的 ViewModel 之间有区别吗?这些是同一件事还是应该分开?

元数据类型是部分实体类的密封内部类。那里似乎没有适当的分离,但元数据类型也可以用验证属性来装饰,这使得它看起来像一个 ViewModel。

我四处搜寻,但没有看到任何详细讨论此问题的内容。


同意 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 http://projects.nikhilk.net/SilverlightFX as in:

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

如最初所示here http://www.nikhilk.net/Silverlight-ViewModel-Pattern.aspx.

正如 Chuck 提到的,我的视图模型中可能确实有其他状态,例如,SelectedProduct 可能双向绑定到我的 xaml 中 ListBox 的 SelectedItem,然后将相同的 SelectedProduct 绑定为 DataForm 的 DataContext 以显示所选产品的详细信息。

希望有帮助!我将在我的博客上详细介绍这一点blog http://www.nikhilk.net soon.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Silverlight 3.0 中结合 .NET RIA 服务和 MVVM 的相关文章

随机推荐