我正在尝试隐式地为DataGrid和TextBlocks应用样式。
对于TextBlock的ForeGround,我需要白色颜色。
对于DataGrid的行,我需要黑色颜色。
除此之外,对于DataGrid的标题列,我再次需要白色。
当我通过
全局在MainPage上应用隐式样式时<UserControl>
<UserControl.Resorces>
<Style targetType="TextBlock">
<Setter Property="Foreground" Value="White"/>
</Style>
</UserControl.Resorces>
</UserControl>
完成TextBlock的前景白色操作!但除此之外的所有元素 在DataGrid中(我认为默认内容元素是文本块)转为白色。
它看起来并不好白色白色,你猜:) 那么我怎样才能特别指定DataGrid的元素前景为黑色?
我可以使用下面显示的相同技术来实现,但这对每个DataGrid来说都是一项昂贵的操作。作为一个骗子我想再次让DataGrid的HeaderColumns变白。这个操作使它们全黑。
我们在css样式中有明确的方法吗?
以下是我尝试通过Control模板实现此目标的内容。但由于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>
提前致谢!
答案 0 :(得分:1)
如果是我,我会提取完整的控件模板并相应地设置它们,而不是试图只做adhoc setter更改来覆盖原始模板的位。在Expression Blend中右键单击,选择“编辑模板 - &gt;编辑副本”并打开行等的模板,然后使用StaticResource隐式应用这些模板。