Próbuję uzyskać styl do zastosowania innego stylu do elementów określonego typu. Podobny do CSS, gdzie byś zrobićWPF - Jak utworzyć styl, który stosuje style do typów potomnych
div a
{
background-color:red;
}
Aby zastosować czerwone tło do wszystkich <a> elementów, które są zawarte przez <div> elementów.
W szczególności staram się, aby wszystkie TableCells zawarte w TableRowGroup o określonym stylu zmieniły ich granice.
Mam następujące rozwiązanie, w którym każdy styl komórki jest ustalany indywidualnie.
<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>
Oczywiście nie jest to preferowane, ponieważ rozciąga się na Xaml, gdy istnieje wiele komórek.
Próbowałem następujące rzeczy bez powodzenia.
<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>
To także nie działa z jakiegoś powodu, choć jest ważny
<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>
Nie będzie kilka grup wierszy każdy z własnym stylu komórki i zawiera wiele komórek. Powiedz mi, że jest lepszy sposób.
Jestem świadomy tego, jak działa atrybut x: Key; twój przykład też nie działa. Zauważ, że w moim przykładzie zastosowałem "HeaderStyle" do określonych grup wierszy (ponieważ nie chcę, aby wszystkie grupy wierszy tabeli miały ten styl), aby styl był nadal poprawnie stosowany. – Slight