案例地址:GitHub - microsoft/WPF-Samples: Repository for WPF related samples
一、运行界面
二、案例功能描述
实现数据模板可选择,对一组数据做区别展示。
知识点:
1、DataTemplateSelector: 提供一种方式,用于根据数据对象和数据绑定元素来选择 System.Windows.DataTemplate。
2、根据模板名获取模板: window.FindResource("MyTaskTemplate") as DataTemplate
三、分析代码
1、实现自定义数据模板选择,继承DataTemplateSelector,重写SelectTemplate方法。
public class TaskListDataTemplateSelector : DataTemplateSelector
{
public override DataTemplate
SelectTemplate(object item, DependencyObject container)
{
if (item != null && item is Task)
{
var taskitem = (Task) item;
var window = Application.Current.MainWindow;
if (taskitem.Priority == 1)
return
window.FindResource("ImportantTaskTemplate") as DataTemplate;
return
window.FindResource("MyTaskTemplate") as DataTemplate;
}
return null;
}
}
2、设置ListBox的ItemTempalteSelector
<ListBox Width="400" Margin="10"
ItemsSource="{Binding Source={StaticResource MyTodoList}}"
ItemTemplateSelector="{StaticResource MyDataTemplateSelector}"
HorizontalContentAlignment="Stretch"
IsSynchronizedWithCurrentItem="True"/>