WPF: cómo crear un estilo que aplique estilos a tipos secundarios

Estoy tratando de obtener un estilo para aplicar otro estilo a elementos de un determinado tipo. Similar a CSS donde harías

div a  
{  
    background-color:red;  
}

Para aplicar un fondo rojo a todos los elementos <a> que están contenidos por elementos <div>.

Específicamente, estoy tratando de obtener todos los TableCells contenidos dentro de un TableRowGroup con un cierto estilo para que cambien sus bordes.

Tengo la siguiente solución donde cada estilo de celda se establece de forma individual.

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

Esto claramente no es preferido ya que infla el xaml cuando hay muchas células.

He intentado lo siguiente sin éxito.

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

Esto tampoco funciona por alguna razón, aunque es válido

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

Habrá algunos grupos de filas, cada uno con su propio estilo de celda y cada uno con muchas celdas. Por favor, dime que hay una mejor manera.

Respuestas a la pregunta(1)

Su respuesta a la pregunta