WPF - So erstellen Sie einen Stil, der Stile auf untergeordnete Typen anwendet

Ich versuche, einen Stil zu erhalten, um einen anderen Stil auf Elemente eines bestimmten Typs anzuwenden. Ähnlich wie bei CSS, wo Sie tun würden

div a  
{  
    background-color:red;  
}

Anwenden eines roten Hintergrunds auf alle <a> Elemente, die in <div> -Elementen enthalten sind.

Insbesondere versuche ich, alle TableCells, die in einer TableRowGroup enthalten sind, mit einem bestimmten Stil zu versehen, damit ihre Rahmen geändert werden.

Ich habe die folgende Lösung, bei der jeder Zellstil einzeln festgelegt wird.

<Table>
    <Table.Columns>
        <TableColumn/>
        <TableColumn/>
    </Table.Columns>

    <Table.Resources>
        <Style x:Key="HeaderStyle" TargetType="{x:Type TableRowGroup}">
            <Setter Property="FontWeight" Value="Normal"/>
            <Setter Property="FontSize" Value="12"/>
        </Style>

        <Style x:Key="HeaderCellStyle" TargetType="{x:Type TableCell}">
            <Setter Property="BorderThickness" Value="0,1,0,1" />
            <Setter Property="BorderBrush" Value="Black" />
        </Style>
    </Table.Resources>

    <TableRowGroup Name="TableColumnHeaders" Style="{StaticResource HeaderStyle}">
        <TableRow>
            <TableCell Style="{StaticResource HeaderCellStyle}">
                <Paragraph>
                    Description
                </Paragraph>
            </TableCell>
            <TableCell Style="{StaticResource HeaderCellStyle}">
                <Paragraph>
                    Amount
                </Paragraph>
            </TableCell>
        </TableRow>
    </TableRowGroup>
</Table>

Dies ist eindeutig nicht bevorzugt, da es das XAML aufbläht, wenn es viele Zellen gibt.

Ich habe folgendes ohne Erfolg versucht.

<Table.Resources>
    <Style x:Key="HeaderStyle" TargetType="{x:Type TableRowGroup}">
        <Style.Resources>
            <Style TargetType="{x:Type TableCell}">
                <Setter Property="BorderThickness" Value="0,1,0,1" />
                <Setter Property="BorderBrush" Value="Black" />
            </Style>
        </Style.Resources>
        <Setter Property="FontWeight" Value="Normal"/>
        <Setter Property="FontSize" Value="12"/>
    </Style>
</Table.Resources>

Dies funktioniert auch aus irgendeinem Grund nicht, ist jedoch gültig

<Table.Resources>
    <Style x:Key="HeaderStyle" TargetType="{x:Type TableRowGroup}">
        <Setter Property="FontWeight" Value="Normal"/>
        <Setter Property="FontSize" Value="12"/>
        <Setter Property="TableCell.BorderThickness" Value="0,1,0,1" />
        <Setter Property="TableCell.BorderBrush" Value="Black" />
    </Style>
</Table.Resources>

Es wird einige Zeilengruppen geben, die jeweils einen eigenen Zellstil haben und viele Zellen enthalten. Bitte sag mir, dass es einen besseren Weg gibt.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage