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
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
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/
Có vẻ như những gì tôi cần. Cảm ơn. –
Cách tiếp cận này không hoạt động được. –
Tôi quên để đưa vào công cụ {x: Type ..., vui lòng thử lại! – rudigrobler
Ngoài ra hãy chắc chắn rằng bạn không có x: Key set! – rudigrobler