Je crée mon propre UserControl et j'ai deux DataTemplates différents sous la section UserControl.Resources dans mon XAML. Je veux choisir entre ces deux datatemplates en fonction de la valeur d'une propriété sur les objets affichés dans une listview. Je fais cela en créant une classe DataTemplateSelector personnalisée et en remplaçant la méthode SelectTemplate qui est supposée renvoyer le DataTemplate que je souhaite utiliser. Cependant, je n'ai aucune idée comment "trouver" mes datatemplates qui sont situés dans la section de ressource UserControls, tous les exemples que j'ai vus seulement récupèrent des datatemplates de Window.Resources. Dans cet exemple, ils vont chercher le courant MainWindow puis utilisez FindResource pour trouver le DataTemplate, comment puis-je chercher mon UserControl de manière similaire ?:Comment trouver une ressource dans un UserControl à partir d'une classe DataTemplateSelector dans 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'exemple ci-dessus est d'ici : ItemsControl.ItemTemplateSelector Property
Est-il impossible de faire la même chose dans XAML? – Joakim
Ok cela fonctionne bien ... Mais ce serait bien de savoir quelle est la manière recommandée de le faire, de préférence en XAML. – Joakim
Tellement vrai .. Je voudrais aussi savoir une manière plus jolie .. mais je ne pense pas que ce problème peut être résolu avec XAML réellement. Vous aurez besoin d'une sorte de référence dans votre code, donc le plus simple est de donner directement;) – Arcturus