Đồng ý với ChuckJ - thường DomainContext là một phần của mô hình xem. Ví dụ: giả sử tôi có trang tìm kiếm cho phép tìm kiếm danh mục sản phẩm. Dưới đây là cách tôi muốn cấu trúc điều:
Trên máy chủ:
class Catalog : DomainService {
IQueryable<Product> GetProducts(string keyword) { ... }
}
Các tạo DomainContext:
class Catalog : DomainContext {
EntityList<Product> Products { get; }
void LoadProducts(string keyword);
}
Quan điểm mô hình tôi sẽ viết:
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);
}
}
Và sau đó cuối cùng trong xaml của tôi, tôi đã thiết lập DataContext của UserControl là một thể hiện của SearchViewModel, và ràng buộc một ItemsContr ol đến thuộc tính Results. Tôi muốn sử dụng mẫu ViewModel mà bạn chọn để liên kết một nút bấm để tìm kiếm (đó là một lệnh hiệu quả mà SearchViewModel cho thấy). Cá nhân tôi thích một cái gì đó mà tôi đã làm việc với Silverlight.FX như trong:
<Button Content="Search"
fxui:Interaction.ClickAction="$model.Search(keywordTextBox.Text)" />
và như ban đầu cho thấy here.
Như Chuck đề cập đến tôi thực sự có thể có trạng thái khác trong mô hình xem của tôi, ví dụ, SelectedProduct có thể là hai chiều ràng buộc với SelectedItem của một ListBox trong xaml của tôi, và sau đó ràng buộc cùng SelectedProduct như DataContext của một DataForm để hiển thị chi tiết của một sản phẩm được chọn.
Hy vọng điều đó sẽ hữu ích! Tôi sẽ viết blog về điều này một số chi tiết trên số blog của tôi sớm.
Nguồn
2009-04-18 20:33:57
Sau một vài suy nghĩ trong tuần qua, tôi nghĩ đây là những gì tôi đang nghĩ. DomianContext không phải là ViewModel hoàn chỉnh mà là một phần của nó.Các thuộc tính được định nghĩa trong MetadataType của DomainService (như [Bắt buộc]) phải redeclared trong ViewModel hay thực tế là DomainContext là một phần của ViewModel, đủ để được nhận bởi công cụ xác nhận không? –
Liên kết tới bài đăng trên blog của Nikhil về chủ đề: http://www.nikhilk.net/Entry.aspx?id=229 –
Thuộc tính siêu dữ liệu [Bắt buộc] vv nằm trên các loại thực thể - chứ không phải trên chính mô hình chế độ xem. Chúng sẽ được chọn nếu bạn trưng ra một thể hiện của thực thể từ mô hình khung nhìn (ví dụ: Các sản phẩm trong mẫu mô hình khung nhìn ở trên). –