Zgadzam się z ChuckJ - ogólnie DomainContext stanowi część modelu widoku. Załóżmy na przykład, że mam stronę wyszukiwania, która umożliwia wyszukiwanie w katalogu produktów. Oto jak ja struktury rzeczy:
Na serwerze:
class Catalog : DomainService {
IQueryable<Product> GetProducts(string keyword) { ... }
}
Wygenerowany DomainContext:
class Catalog : DomainContext {
EntityList<Product> Products { get; }
void LoadProducts(string keyword);
}
Model widok chciałbym napisać:
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);
}
}
I następnie w końcu w moim xaml ustawiłem DataContext UserControl na instancję SearchViewModel i związam ItemContr ol do właściwości Results. Chciałbym użyć wybranego wzorca ViewModel, aby powiązać kliknięcie przycisku z wyszukiwaniem (co jest w rzeczywistości poleceniem wyeksponowanym przez SearchViewModel). Ja osobiście lubię coś, że mam pracę z Silverlight.FX jak w:
<Button Content="Search"
fxui:Interaction.ClickAction="$model.Search(keywordTextBox.Text)" />
i jak początkowo pokazane here.
Jak wspomina Chuck, mógłbym rzeczywiście mieć inny stan w moim modelu widokowym, na przykład SelectedProduct, który może być dwukierunkowy związany z SelectedItem listBox w moim xaml, a następnie wiązać ten sam SelectedProduct jako DataContext of DataForm, aby wyświetlić szczegóły wybranego produktu.
Nadzieję, że pomaga! Niedługo będę blogować o tym więcej na moim blog.
Po przemyśleniu ostatniego tygodnia myślę, że właśnie o tym myślałem. DomianContext nie jest pełnym ViewModel, ale jego częścią.Czy atrybuty zdefiniowane w MetadataType z DomainService (jak [Wymagane]) będą musiały zostać ponownie zadeklarowane w ViewModel lub fakt, że DomainContext jest częścią ViewModel na tyle, aby zostać pobranym przez silnik sprawdzania poprawności? –
Link do posta na blogu Nikhil na temat: http://www.nikhilk.net/Entry.aspx?id=229 –
Atrybuty metadanych [Wymagane] itd. Są na typach jednostek - nie na samym modelu widoku. Zostaną pobrane, jeśli wystawisz instancję obiektu z modelu widoku (np. Produkty w powyższym przykładzie modelu widoku). –