2008-09-30 35 views
13

Tôi có nhiều mục bên trong một danh sách kiểm soát. Tôi muốn mỗi mục có một mẫu mục khác nhau tùy thuộc vào loại mục. Vì vậy, mục đầu tiên trong danh sách là một loại ObjectA và vì vậy tôi muốn nó được trả lại với ItemTemplateA. Thứ hai là một loại ObjectB và vì vậy tôi muốn nó có ItemTemplateB để render. Tại thời điểm này, tôi chỉ có thể sử dụng cài đặt ItemTemplate để xác định một mẫu cho tất cả chúng. Bất kỳ cách nào để đạt được điều này?Mẫu mục khác nhau cho mỗi mục trong Danh sách WPF?

Trả lời

14

các ItemTemplateSelector sẽ làm việc nhưng tôi nghĩ rằng đó là dễ dàng hơn để tạo nhiều DataTemplate trong phần tài nguyên của bạn và sau đó chỉ cần cung cấp cho mỗi một một DataType. Điều này sẽ tự động sau đó sử dụng DataTemplate này nếu trình tạo mục phát hiện loại dữ liệu phù hợp?

<DataTemplate DataType={x:Type local:ObjectA}> 
    ... 
</DataTemplate> 

Ngoài ra hãy chắc chắn rằng bạn không có x:Key bộ cho DataTemplate.
Đọc thêm về phương pháp này here

+0

Cách tiếp cận này không hoạt động được. –

+4

Tôi quên để đưa vào công cụ {x: Type ..., vui lòng thử lại! – rudigrobler

+1

Ngoài ra hãy chắc chắn rằng bạn không có x: Key set! – rudigrobler

6

Hãy xem thuộc tính ItemTemplateSelector trong điều khiển danh sách của bạn. Bạn có thể trỏ nó vào một TemplateSelector tùy chỉnh và quyết định mẫu nào sẽ sử dụng trong mã.

Dưới đây là một bài đăng blog TemplateSelectors mô tả:

http://blogs.interknowlogy.com/johnbowen/archive/2007/06/21/20463.aspx

Edit: Đây là một bài viết tốt hơn:

http://blog.paranoidferret.com/index.php/2008/07/16/wpf-tutorial-how-to-use-a-datatemplateselector/

+0

Có vẻ như những gì tôi cần. Cảm ơn. –

Các vấn đề liên quan