全球风格 - WPF

时间:2017-10-26 13:50:54

标签: c# wpf mahapps.metro

我试图应用样式,但我遇到了问题。我有这种全球风格(注意我使用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中。这非常有效。问题是当我想在窗口的.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>

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

2 个答案:

答案 0 :(得分:1)

这是因为你从{StaticResource MetroDataGridCell}继承你的风格 将其更改为{StaticResource {x:Type DataGridCell}},它应该可以正常工作。

答案 1 :(得分:0)

据我所知,在WPF中任何特定元素只能应用一个Style。