Я создаю свой собственный UserControl, и у меня есть два различных шаблона данных в разделе UserControl.Resources в моем XAML. Я хочу выбирать между этими двумя таблицами данных в зависимости от значения свойства объектов, отображаемых в виде списка. Я делаю это, создавая собственный класс DataTemplateSelector и переопределяя метод SelectTemplate , который должен возвращать DataTemplate, который я хочу использовать. Однако я понятия не имею, как «найти» мои шаблоны данных, которые расположены в разделе ресурсов UserControls, все примеры, которые я видел, только выбирают шаблоны данных из Window.Resources . В этом примере они выбирают текущий MainWindow , а затем используют FindResource , чтобы найти DataTemplate , как мне извлечь мой UserControl в аналогичном манера:
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;
}
Пример выше отсюда: ItemsControl.ItemTemplateSelector Свойство