Sto creando il mio UserControl e ho due DataTemplates diversi nella sezione UserControl.Resources nel mio XAML. Voglio scegliere tra questi due datatemplates in base al valore di una proprietà sugli oggetti visualizzati in un listview. Lo faccio creando una classe personalizzata DataTemplateSelector e sovrascrivendo il metodo SelectTemplate che dovrebbe restituire il DataTemplate che desidero utilizzare. Tuttavia, non ho idea di come "trovare" i miei datatemplates che si trovano nella sezione di risorse UserControls, tutti gli esempi che ho visto recuperano solo datatemplates da Window.Resources. In questo esempio, essi recuperano la corrente MainWindow e quindi utilizzare FindResource per trovare la DataTemplate, come faccio Prendi il mio UserControl in un modo simile ?:Come trovare una risorsa in un UserControl da una classe DataTemplateSelector in 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;
}
L'esempio di cui sopra è da qui : ItemsControl.ItemTemplateSelector Property
Non c'è modo di fare la stessa cosa in XAML? – Joakim
Ok questo funziona bene ... Ma sarebbe bello sapere qual è il modo consigliato per farlo, preferibilmente facendo tutto in XAML. – Joakim
Così vero .. Anch'io vorrei conoscere un modo più carino .. ma non penso che questo problema possa essere risolto con XAML. Avrai bisogno di un qualche tipo di riferimento nel tuo codice, quindi il modo più semplice è quello di darti direttamente;) – Arcturus