Согласен с 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 я установил DataContext UserControl как экземпляр SearchViewModel и связал бы ItemContr ol до свойства Results. Я бы использовал шаблон ViewModel по вашему выбору, чтобы привязать кнопку «Поиск» (которая фактически является командой, которую предоставляет SearchViewModel). Лично мне нравится то, что я, работая с Silverlight.FX как в:
<Button Content="Search"
fxui:Interaction.ClickAction="$model.Search(keywordTextBox.Text)" />
и, как первоначально показано here.
Как Чак упоминает, что у меня может быть другое состояние в моей модели представления, например, SelectedProduct, который может быть привязан к элементу SelectedItem ListBox в моем xaml, а затем привязать тот же SelectedProduct, что и DataContext DataForm для отображения информации о выбранном продукте.
Надеюсь, что это поможет! Я буду вести блог об этом еще немного на моем blog в ближайшее время.
После некоторой мысли за прошедшую неделю я думаю, что это то, о чем я думал. DomianContext - это не полный ViewModel, а его часть.Должны ли атрибуты, определенные в метаданныхType DomainService (например [Required]), быть обновлены в ViewModel или тот факт, что DomainContext является частью ViewModel, достаточным для того, чтобы быть воспринятым механизмом проверки? –
Ссылка на сообщение в блоге Nikhil: http://www.nikhilk.net/Entry.aspx?id=229 –
Атрибуты метаданных [Обязательный] и т. Д. Относятся к типам сущностей, а не к самой модели представления. Они будут подняты, если вы выставляете экземпляр объекта из модели представления (например, продукты в примере модели представления выше). –