WPF - ItemsControl/ListBox 的可重用 DataTemplate
WPF - reusable DataTemplate for ItemsControl/ListBox
我需要重用以下数据模板:
<DataTemplate x:Key="courseItemTemplate">
<Border BorderThickness="3" CornerRadius="5">
<Border.Background>
<SolidColorBrush>
<SolidColorBrush.Color>
<MultiBinding Converter="{StaticResource CourseColorConverter}">
<Binding RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType=Window}" Path="DataContext.CourseColors"/>
<Binding Path="Course.CourseInfo.ID"/>
</MultiBinding>
</SolidColorBrush.Color>
</SolidColorBrush>
</Border.Background>
<ContentControl Content="{Binding}"/>
</Border>
</DataTemplate>
该模板将同时服务于 ListBox 和 ItemsControl,具有不同的 ItemsSource,以及用于呈现每个项目内容的不同模板。
本质上,我想要的是能够用每个控件的相关模板替换 ContentControl 标签
使用两个具有共同边框样式的数据模板:
<Style x:Key="BorderStyle" TargetType="Border">
<Setter Property="Background">
<Setter.Value>
<SolidColorBrush>...</SolidColorBrush>
</Setter.Value>
</Setter>
</Style>
<DataTemplate x:Key="T1">
<Border Style="{StaticResource BorderStyle}">
<ContentPresenter Content="{Binding P1}"/>
</Border>
</DataTemplate>
<DataTemplate x:Key="T2">
<Border Style="{StaticResource BorderStyle}">
<ContentPresenter Content="{Binding P2}"/>
</Border>
</DataTemplate>
我需要重用以下数据模板:
<DataTemplate x:Key="courseItemTemplate">
<Border BorderThickness="3" CornerRadius="5">
<Border.Background>
<SolidColorBrush>
<SolidColorBrush.Color>
<MultiBinding Converter="{StaticResource CourseColorConverter}">
<Binding RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType=Window}" Path="DataContext.CourseColors"/>
<Binding Path="Course.CourseInfo.ID"/>
</MultiBinding>
</SolidColorBrush.Color>
</SolidColorBrush>
</Border.Background>
<ContentControl Content="{Binding}"/>
</Border>
</DataTemplate>
该模板将同时服务于 ListBox 和 ItemsControl,具有不同的 ItemsSource,以及用于呈现每个项目内容的不同模板。 本质上,我想要的是能够用每个控件的相关模板替换 ContentControl 标签
使用两个具有共同边框样式的数据模板:
<Style x:Key="BorderStyle" TargetType="Border">
<Setter Property="Background">
<Setter.Value>
<SolidColorBrush>...</SolidColorBrush>
</Setter.Value>
</Setter>
</Style>
<DataTemplate x:Key="T1">
<Border Style="{StaticResource BorderStyle}">
<ContentPresenter Content="{Binding P1}"/>
</Border>
</DataTemplate>
<DataTemplate x:Key="T2">
<Border Style="{StaticResource BorderStyle}">
<ContentPresenter Content="{Binding P2}"/>
</Border>
</DataTemplate>