WPF 模板选择器
模板选择器:根据内容可以自定义调用不同的模板
//模板选择器类
public class PersonDataTemplateSelector : DataTemplateSelector
{
public DataTemplate NormalTemplate { get; set; }
public DataTemplate HightlightTemplate { get; set; }
public int MinAge { get; set; }
public int MaxAge { get; set; }
public string PropName { get; set; }
public string NameValue { get; set; }
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
Person person = item as Person;
var result = person.GetType().GetProperty(PropName).GetValue(person);
//if (person.Age > MinAge && person.Age <= MaxAge)
//{
// return HightlightTemplate;
//}
if (result.ToString() == NameValue)
{
return HightlightTemplate;
}
return NormalTemplate;
}
}
//调用模板选择器类
<ListView ItemsSource="{DynamicResource array}">
<ListView.ItemTemplateSelector>
<local:PersonDataTemplateSelector NormalTemplate="{StaticResource normalDt}"
HightlightTemplate="{StaticResource highlightDt}"
MinAge="28" MaxAge="30"
PropName="Name" NameValue="Ace"/>
</ListView.ItemTemplateSelector>
</ListView>