全局样式 - WPF

Global style - WPF

我正在尝试应用样式,但遇到了问题。我有这个全局样式(注意我用的是MahApps)

<Style TargetType = "{x: Type DataGridCell}"
           BasedOn = "{StaticResource MetroDataGridCell}">
        <Setter Property = "Template">
            <Setter.Value>
                <ControlTemplate TargetType = "{x: Type DataGridCell}">
                    <Grid>
                        <ContentPresenter HorizontalAlignment = "Center"
                                          VerticalAlignment = "Center" />
                    </ Grid>
                </ ControlTemplate>
            </Setter.Value>
        </ Setter>
</ Style>

它的作用是将 DataGrid 中单元格的内容居中。这非常有效。问题是当我想在我的 window.

的 .xaml 中嵌套另一种样式时
<DataGridTextColumn Header="Date" Binding="{Binding Date, Converter={StaticResource DefaultDateTimeToHyphenStyle}, UpdateSourceTrigger=PropertyChanged}">
    <DataGridTextColumn.CellStyle>
        <Style TargetType="{x:Type DataGridCell}"
               BasedOn="{StaticResource MetroDataGridCell}">
            <Setter Property="Foreground" Value="{Binding Path=., Converter={StaticResource CellForegroundColorDateConverter}}" />
        </Style>
    </DataGridTextColumn.CellStyle>
</DataGridTextColumn>

如果我应用该样式,全局样式(在该单元格中)将停止工作。将文本左对齐。怎么了?谢谢。

据我所知,在 WPF 中,对于任何特定元素,只能应用一种样式。

发生这种情况是因为您从 {StaticResource MetroDataGridCell} 继承了您的样式 将其更改为 {StaticResource {x: Type DataGridCell}} 它应该可以工作。