您可以实现一个DataTemplateSelector,如here所述。
我使用它,它工作得很好。
编辑:
如果您需要更新的DataTemplate当属性的变化,你应该订阅的TemplateSelector数据对象的PropertyChanged事件,并再次执行SelectTemplate方法。
下面是代码示例:
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
City itemAux = item as City;
// Subscribe to the PropertyChanged event
itemAux.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(itemAux_PropertyChanged);
return GetTemplate(itemAux, container);
}
private DataTemplate GetTemplate(City itemAux, DependencyObject container)
{
if (itemAux != null)
{
if (itemAux.Country == "Brazil")
return BrazilTemplate;
if (itemAux.Country == "USA")
return UsaTemplate;
if (itemAux.Country == "England")
return EnglandTemplate;
}
return base.SelectTemplate(itemAux, container);
}
void itemAux_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
// A property has changed, we need to reevaluate the template
this.ContentTemplate = GetTemplate(sender as City, this);
}
我见过DataTemplateSelector。我想要的是重新选择datatemplate如果属性改变。 – ua741
我编辑了我的答案,告诉我它是否适合你。 –