Wpf 修改ContentPresenter.ContentTemplate DataTemplate时,DataGridTemplateColumn.CellTemplate不工作
我有以下风格:Wpf 修改ContentPresenter.ContentTemplate DataTemplate时,DataGridTemplateColumn.CellTemplate不工作,wpf,xaml,wpf-controls,wpf-style,contentpresenter,Wpf,Xaml,Wpf Controls,Wpf Style,Contentpresenter,我有以下风格: <Style x:Key="DefaultDataGridCell" TargetType="DataGridCell"> <Setter Property="FontSize" Value="13"/> <Setter Property="Margin" Value="0" /> <Sette
<Style x:Key="DefaultDataGridCell" TargetType="DataGridCell">
<Setter Property="FontSize" Value="13"/>
<Setter Property="Margin" Value="0" />
<Setter Property="Foreground" Value="Black"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Border x:Name="CellBorder" Padding="1.5,0" Background="{TemplateBinding Background}" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}" SnapsToDevicePixels="True">
<ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}">
<!--Here my problems of understanding are starting-->
<ContentPresenter.ContentTemplate>
<DataTemplate >
<TextBlock Text="{Binding Text}"
Padding="2,0"
Background="{Binding Background}"
ToolTip="{Binding ToolTip}"
/>
</DataTemplate>
</ContentPresenter.ContentTemplate>
</ContentPresenter>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
使用上述样式,此XAML无法如我所希望的那样工作:
<DataGridTemplateColumn Header="Eskalation" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="15"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" >
<TextBlock.Background>
<MultiBinding ConverterParameter="EskaStufe1" Converter="{StaticResource EskalationsBackgroundConverter}">
<Binding Path="Status"/>
<Binding Path="Prioritat"/>
<Binding Path="ErfasstAm"/>
</MultiBinding>
</TextBlock.Background>
</TextBlock>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
将忽略
。我希望这个XAML能得到更高的优先级
如果我删除
标记,一切正常。正如我所预料的那样
<Style x:Key="DefaultDataGridCell" TargetType="DataGridCell">
<Setter Property="FontSize" Value="13"/>
<Setter Property="Margin" Value="0" />
<Setter Property="Foreground" Value="Black"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Border x:Name="CellBorder" Padding="1.5,0" Background="{TemplateBinding Background}"
BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}"
SnapsToDevicePixels="True">
<ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
因此,我需要帮助了解如何更改XAML以使其正常工作
非常感谢 睡了几个小时后,我想出了解决办法。静静地站起来,马上支撑起来 太容易了。定义新样式并将其应用于受影响的列
<Style x:Key="EskalationsDataGridCellStyle" TargetType="DataGridCell"
BasedOn="{StaticResource DefaultDataGridCell}">
<Setter Property="Margin" Value="2,0" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Border x:Name="CellBorder" Padding="1.5,0" Background="{TemplateBinding Background}"
BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}" SnapsToDevicePixels="True">
<ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
以及使用:
<DataGridTemplateColumn Header="Eskalation" CellStyle="{StaticResource EskalationsDataGridCellStyle}" >