解释:多个DataTemplate可用于同一类型的对象,之这样可以根据每个数据对象的属性,提供自己的逻辑来选择要应用的DataTemplate也需要创建DtataTemplate,也需要创建DataTemplateSlelector。如果有不同类型的对象,可以对DataTemplate设置DataType( 也就是根据不同数据选择不同的模板)
- 新建Selector文件夹
- 建立对应的层级关系
- 界面使用选择器
//样式模型说明
internal class DeafultItemDataTemplateSelector : DataTemplateSelector {
public DataTemplate DefaultTemplate { get; set; }
public DataTemplate NormalTemplate { get; set; }
public override DataTemplate SelectTemplate(object item, DependencyObject container) {
var isDefault = Convert.ToBoolean(item);
if (isDefault) {
return DefaultTemplate;
}
return NormalTemplate;
}
}
//文件选择 继承DeafultItemDataTemplateSelector 选择器
internal class FileLoadDefaultDataTemplateSelector : DeafultItemDataTemplateSelector {
public override DataTemplate SelectTemplate(object item, DependencyObject container) {
var imgInfo = item as ImageLoadInfo;
return base.SelectTemplate(imgInfo.IsDefaultItem, container);
}
}
<dialog:Dialog.Resources>
<selector:FileLoadDefaultDataTemplateSelector x:Key="DefaultDataTemplateSelector">
<selector:DeafultItemDataTemplateSelector.DefaultTemplate>
<DataTemplate>
写具体的样式
</DataTemplate>
</selector:DeafultItemDataTemplateSelector.DefaultTemplate>
<selector:DeafultItemDataTemplateSelector.NormalTemplate>
<DataTemplate>
写具体的样式
</DataTemplate>
</selector:DeafultItemDataTemplateSelector.NormalTemplate>
</selector:FileLoadDefaultDataTemplateSelector>
</dialog:Dialog.Resources>
默认样式样式大部分会在列表下进行(ListView)
ItemTemplateSelector="{StaticResource DefaultDataTemplateSelector}"
绑定对应的样式