WPF - combine/link 多种样式合二为一

WPF - combine/link multiple styles into one

在我的 WPF 应用程序中,我想设置数据网格的样式。为此,我需要几个单独的样式(子样式),因为它们针对不同的控件。现在我想将它们组合成一种样式(主要样式)以通过 <DataGrid Style="{StaticResource MyDataGridStyle}">

将其设置为 xml

子样式的伪代码:

<ResourceDictionary>
    <!-- sub styles -->
    <Style x:Key="RowStyle" TargetType="Row">...</Style>
    <Style x:Key="ColumnStyle" TargetType="Column">...</Style>
    <Style x:Key="ColumnHeaderStyle" TargetType="ColumnHeader">...</Style>
    <Style x:Key="SomeInnerElementStyle" TargetType="SomeInnerElement">...</Style>
</ResourceDictionary>

目前我正在通过

组合样式
<!-- inside the ResourceDictionary -->
<!-- main style -->
<Style x:Key="MyDataGridStyle" TargetType="DataGrid">
    <Style.Resources>
        <Style BasedOn="{StaticResource RowStyle}" TargetType="Row" />
        ... all other sub styles go here
    </Style.Resources>
</Style>

有没有更优雅的方式在我的主样式中包含子样式? BasedOn 属性迫使我再次指定 TargetType,这很痛苦,而且我不想包含“基于子样式的新样式”,而只是包含“子样式”。

设置对应的Style属性:

<Style x:Key="MyDataGridStyle" TargetType="DataGrid">
    <Setter Property="RowStyle" Value="{StaticResource RowStyle}" />
    <Setter Property="ColumnStyle" Value="{StaticResource ColumnStyle}" />
    <Setter Property="ColumnHeaderStyle" Value="{StaticResource ColumnHeaderStyle}" />
</Style>