【发布时间】:2012-12-21 09:42:10
【问题描述】:
我正在尝试为 DataGrid 和 TextBlocks 隐式应用样式。
对于 TextBlock 的前景,我需要 白色 颜色。
对于 DataGrid 的行,我需要 Black 颜色。
除此之外,DataGrid 的标题列还需要 White。
当我在 MainPage 上全局应用隐式样式时
<UserControl>
<UserControl.Resorces>
<Style targetType="TextBlock">
<Setter Property="Foreground" Value="White"/>
</Style>
</UserControl.Resorces>
</UserControl>
TextBlock 的 Foreground White 操作完成!但除此之外,所有元素 在 DataGrid 中(默认情况下,我认为内容元素是文本块)变成白色。
正如你猜想的那样,白底白字看起来不太好 :) 那么如何将DataGrid的元素Foreground特别指定为黑色呢?
我可以通过使用下面显示的相同技术来做到这一点,但这对于每个 DataGrid 来说都是一项昂贵的操作。作为一个骗局,我希望 DataGrid 的 HeaderColumns 再次变白。此操作使它们全部变黑。
有没有像我们在 css 样式中那样的显式方式?
这是我试图通过控制模板实现这一目标的方法。但是没有机会因为是DataGrid的ContentControl是动态的。
<DataGrid>
<DataGrid.Resources>
<Style targetType="TextBlock">
<Setter Property="Foreground" Value="Black"/>
</Style>
<DataGrid.Resources>
实际上我们使用 Telerik 的 RadGridView,但我给出了一个 sdk 的 DataGrid 示例以使问题更加全球化。
<Style TargetType="sdk:DataGrid">
<Setter Property="Foreground" Value="Black"/>
<Setter Property="RowDetailsTemplate" Value="{StaticResource DataTemplate1}"/>
<Setter Property="Template" Value="{StaticResource ControlTemplate1}"/>
</Style>
<ControlTemplate x:Key="ControlTemplate1" TargetType="sdk:DataGrid">
<Grid/>
</ControlTemplate>
<DataTemplate x:Key="DataTemplate1">
<Grid/>
</DataTemplate>
提前致谢!
【问题讨论】:
标签: xaml silverlight-4.0 silverlight-5.0