【发布时间】:2012-06-29 19:44:53
【问题描述】:
根据您的评论更新
根据您的评论,我相信使用Style 继承可以轻松解决您的问题。下面是在不同 TableRowGroups 上使用 2 种不同单元格样式的示例:
<Table>
<Table.Resources>
<Style x:Key="HeaderCellStyle" TargetType="{x:Type TableCell}">
<Setter Property="BorderThickness" Value="0,1,0,1" />
<Setter Property="BorderBrush" Value="Black" />
<Setter Property="TextAlignment" Value="Center" />
<Setter Property="FontStyle" Value="Italic" />
<Setter Property="Padding" Value="5" />
</Style>
<Style x:Key="FooterCellStyle" BasedOn="{StaticResource HeaderCellStyle}" TargetType="{x:Type TableCell}">
<Setter Property="Background" Value="AliceBlue" />
<Setter Property="TextAlignment" Value="Right" />
<Setter Property="FontWeight" Value="Bold" />
</Style>
<Style x:Key="HeaderTableRowGroupStyle" TargetType="{x:Type TableRowGroup}">
<Style.Resources>
<Style BasedOn="{StaticResource HeaderCellStyle}" TargetType="{x:Type TableCell}" />
</Style.Resources>
</Style>
<Style x:Key="FooterTableRowGroupStyle" TargetType="{x:Type TableRowGroup}">
<Style.Resources>
<Style BasedOn="{StaticResource FooterCellStyle}" TargetType="{x:Type TableCell}" />
</Style.Resources>
</Style>
</Table.Resources>
<Table.Columns>
<TableColumn />
<TableColumn />
<TableColumn />
<TableColumn />
</Table.Columns>
<!-- This TableRowGroup hosts a header row for the table. -->
<TableRowGroup Style="{StaticResource HeaderTableRowGroupStyle}">
<TableRow>
<TableCell />
<TableCell>
<Paragraph>Gizmos</Paragraph>
</TableCell>
<TableCell>
<Paragraph>Thingamajigs</Paragraph>
</TableCell>
<TableCell>
<Paragraph>Doohickies</Paragraph>
</TableCell>
</TableRow>
</TableRowGroup>
<!-- This TableRowGroup hosts the main data rows for the table. -->
<TableRowGroup>
<TableRow>
<TableCell>
<Paragraph>Blue</Paragraph>
</TableCell>
<TableCell>
<Paragraph>1</Paragraph>
</TableCell>
<TableCell>
<Paragraph>2</Paragraph>
</TableCell>
<TableCell>
<Paragraph>3</Paragraph>
</TableCell>
</TableRow>
<TableRow>
<TableCell>
<Paragraph>Red</Paragraph>
</TableCell>
<TableCell>
<Paragraph>1</Paragraph>
</TableCell>
<TableCell>
<Paragraph>2</Paragraph>
</TableCell>
<TableCell>
<Paragraph>3</Paragraph>
</TableCell>
</TableRow>
<TableRow>
<TableCell>
<Paragraph>Green</Paragraph>
</TableCell>
<TableCell>
<Paragraph>1</Paragraph>
</TableCell>
<TableCell>
<Paragraph>2</Paragraph>
</TableCell>
<TableCell>
<Paragraph>3</Paragraph>
</TableCell>
</TableRow>
</TableRowGroup>
<!-- This TableRowGroup hosts a footer row for the table. -->
<TableRowGroup Style="{StaticResource FooterTableRowGroupStyle}">
<TableRow>
<TableCell>
<Paragraph>Totals</Paragraph>
</TableCell>
<TableCell>
<Paragraph>3</Paragraph>
</TableCell>
<TableCell>
<Paragraph>6</Paragraph>
</TableCell>
<TableCell>
<Paragraph>9</Paragraph>
</TableCell>
</TableRow>
</TableRowGroup>
</Table>
当您想要定义一个通用的Style 以针对特定类型的所有元素时,您不得为该样式指定 Key。尝试从 Style 中删除 x:Key ,一切都应该正常工作,如下所示:
<Table.Resources>
<Style 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(因为我不希望所有表格行组都具有这种样式),因此仍然可以正确应用该样式。