2009-06-19 19 views
7

Trong MVVM, mỗi Chế độ xem đều có một ViewModel. Chế độ xem tôi hiểu là Cửa sổ, Trang hoặc UserControl mà bạn có thể đính kèm ViewModel mà từ đó chế độ xem nhận dữ liệu của nó.Trong MVVM là DataTemplates được coi là Chế độ xem khi UserControls là Chế độ xem?

Nhưng DataTemplate cũng có thể hiển thị dữ liệu của ViewModel.

Vì vậy, tôi hiểu DataTemplate là một "Chế độ xem" khác, nhưng dường như có khác biệt, ví dụ: Windows, Pages và UserControls có thể định nghĩa tệp .dll của riêng mình, một loại được liên kết với DataContect khác bằng cách đính kèm mẫu để Windows, Pages, UserControls có thể được gắn vào ViewModels theo kiểu động ServiceLocator/Container, v.v.

DataTemplates khác với Windows/Pages/UserControls như thế nào khi nói đến kết xuất dữ liệu của ViewModel trên giao diện người dùng? Và có những loại "Lượt xem" khác với bốn loại này không?

Trả lời

7

Cách tôi sử dụng, DataTemplate thực sự là cách để liên kết Chế độ xem với ViewModel. Thông thường DataTemplates của tôi trong MVVM trông giống như sau:

<DataTemplate DataType="{x:Type vm:FooViewModel}"> 
    <v:FooView /> 
</DataTemplate> 
+0

thú vị, nhưng sau đó làm thế nào để phần còn lại của XAML của bạn trông? Tôi đã thử một ví dụ nhỏ về điều này, biên soạn nó và Visual Studio cho biết nó cần quyền quản trị (Vista), lẻ. Muốn xem cách bạn sử dụng mẫu này trong một dự án. –

+0

Về cơ bản, tôi đặt bảng kê "ánh xạ" trong App.xaml hoặc XAML của cửa sổ chính và mọi thứ khác là UserControls ... –

+0

Bạn đang sử dụng ContentControl để kéo ViewModel rồi, tôi đang thử với mẫu dữ liệu giống như của bạn thực hiện điều này " nhưng nó không liên kết chúng, nó chỉ hiển thị không có gì. –

0

Tôi sẽ không khuyên bạn sử dụng DataTemplate để ràng buộc chế độ xem cho chế độ xem. Tôi hiện đang gặp sự cố về hiệu suất khi sử dụng phương pháp này vì chế độ xem được làm mới mỗi khi chế độ xem được lấy nét. Như bạn có thể thấy herehere

Unfortunatley Tôi chưa tìm thấy tùy chọn nào tốt hơn.

1

gì là làm cho ý nghĩa nhất đối với tôi vào thời điểm này trong chuyển sang MVVM là:

UserControls: views Group và điều khiển cùng nhau mà có nghĩa là để thực hiện toàn bộ quá trình cho người dùng. Tôi sử dụng một usercontrol cho một slide-out ngăn kéo mà tôi tạo ra cho phép một người dùng lật qua phân loại khác nhau của các bộ phận (trong đó mỗi loại phần chính routs người dùng thông qua quá trình lựa chọn riêng của nó/wizard). Ngoài ra, hãy xem Điều khiển biểu đồ.

Chế độ xem: Về cơ bản một mạng lưới nhóm các dữ liệu và điều khiển có liên quan cư trú dữ liệu mong muốn ở mức nhỏ nhất để có thể sử dụng lại.

DataTemplates: Nhóm sự thật về "mục" như trong hộp danh sách hoặc GridView. Tôi nghĩ về điều này như thế nào là những gì văn bản đại diện cho một đối tượng bạn đang cố gắng để đạt được thông tin về trong một danh sách. Vì vậy, một mẫu điều khiển sẽ bọc các khối mẫu dữ liệu để kiểm soát hành vi hiển thị của tập hợp các mục mẫu được bao bọc dữ liệu đó.

Đó là cách tôi hiểu, nhưng ranh giới rất mờ. Tôi thích cuốn sách Apress Blend Express Expression 4 bởi Andrew Troelson. Tuy nhiên, anh ta không thực sự đưa ra bất kỳ ví dụ nặng về dữ liệu nào.