同意 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.