I have created a DataTemplateSelector class. I would like to apply it to a single item, so it chooses a template based on some conditions.
Essentially I’d like to have the equivalent of this in xaml:
% if myitem.A
<TextBlock Text="{Binding myitem.data }"/>
% else if myitem.B
<Button Content="{Binding myitem.data }"/>
public class MyTemplateSelector : DataTemplateSelector
{
public DataTemplate A {
get;
set;
}
public DataTemplate B {
get;
set;
}
public override DataTemplate SelectTemplate(object item, DependencyObject container) {
var myitem = item as MyItem;
if (myitem.A)
return A;
else if (myitem.B)
return B;
return base.SelectTemplate(item, container);
}
}
How can I achieve this?
Thanks.
If you have one item, not a list of items, you can use
ContentPresenterwith a customContentTemplateto show this item.ContentTemplatecan use yourTemplateSelectoras you know:This is my
TemplateSelector:And this line add some content to display: