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}" >