Я пытаюсь получить стиль для применения другого стиля к элементам определенного типа. Подобно CSS, где вы могли бы сделатьWPF - Как создать стиль, который применяет стили к дочерним типам
div a
{
background-color:red;
}
Чтобы применить красный фон ко всем < через > элементов, содержащихся в < ДИВ > элементов.
В частности, я пытаюсь получить все TableCells, содержащиеся в TableRowGroup, с определенным стилем, чтобы изменить границы.
У меня есть следующее решение, в котором каждый стиль ячейки задается индивидуально.
<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>
Это явно не является предпочтительным, поскольку оно раздувает xaml, когда есть много ячеек.
Я пробовал следующее без успеха.
<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>
Это также не работает по какой-то причине, хотя действует
<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>
Там будет несколько групп рядов, каждый со своим собственным стилем клеток и каждая из которых содержит много клеток. Пожалуйста, скажи мне, что есть лучший способ.
Я знаю, как работает атрибут x: Key; ваш пример тоже не работает. Обратите внимание, что в моем примере я применял «HeaderStyle» к определенным RowGroups (потому что я не хочу, чтобы все группы строк таблицы имели этот стиль), поэтому стиль все еще применяется правильно. – Slight