Tôi đang tạo UserControl của riêng mình và tôi có hai DataTemplates khác nhau theo phần UserControl.Resources trong XAML của tôi. Tôi muốn lựa chọn giữa hai datatemplates tùy thuộc vào giá trị của một tài sản trên các đối tượng được hiển thị trong một listview. Tôi làm điều này bằng cách tạo một lớp tùy chỉnh DataTemplateSelector và ghi đè phương thức SelectTemplate được cho là trả về DataTemplate mà tôi muốn sử dụng. Tuy nhiên, tôi không có ý tưởng làm thế nào để "tìm" datatemplates của tôi được đặt trong phần tài nguyên UserControls, tất cả các ví dụ tôi đã nhìn thấy chỉ lấy datatemplates từ Window.Resources. Trong ví dụ này, họ lấy hiện tại MainWindow và sau đó sử dụng FindResource để tìm DataTemplate, làm thế nào để tôi lấy tôi UserControl một cách tương tự ?:Cách tìm tài nguyên trong UserControl từ lớp DataTemplateSelector trong WPF?
public override DataTemplate
SelectTemplate(object item, DependencyObject container)
{
if (item != null && item is AuctionItem)
{
AuctionItem auctionItem = item as AuctionItem;
Window window = Application.Current.MainWindow;
switch (auctionItem.SpecialFeatures)
{
case SpecialFeatures.None:
return
window.FindResource("AuctionItem_None")
as DataTemplate;
case SpecialFeatures.Color:
return
window.FindResource("AuctionItem_Color")
as DataTemplate;
}
}
return null;
}
Ví dụ trên là từ đây : ItemsControl.ItemTemplateSelector Property
Không có cách nào để làm điều tương tự trong XAML? – Joakim
Ok điều này hoạt động tốt ... Nhưng nó sẽ được tốt đẹp để biết những gì được đề nghị cách làm điều này là, tốt nhất là làm tất cả trong XAML. – Joakim
Vì vậy, sự thật .. Tôi cũng muốn biết một cách đẹp hơn .. nhưng tôi không nghĩ rằng vấn đề này có thể được giải quyết với XAML thực sự. Bạn sẽ cần một số loại tài liệu tham khảo trong mã của bạn phía sau, vì vậy cách dễ nhất là chỉ cần cung cấp trực tiếp;) – Arcturus