Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xaml 为DataGrid元素提供特定样式(隐式)_Xaml_Silverlight 4.0_Silverlight 5.0 - Fatal编程技术网

Xaml 为DataGrid元素提供特定样式(隐式)

Xaml 为DataGrid元素提供特定样式(隐式),xaml,silverlight-4.0,silverlight-5.0,Xaml,Silverlight 4.0,Silverlight 5.0,我正在尝试为DataGrid和TextBlocks隐式应用一种样式 对于TextBlock的前景,我需要白色颜色 对于DataGrid的行,我需要黑色颜色 除此之外,对于DataGrid的标题列,我还需要白色 当我在主页上全局应用隐式样式时 <UserControl> <UserControl.Resorces> <Style targetType="TextBlock"> <Setter Property="Foregrou

我正在尝试为DataGrid和TextBlocks隐式应用一种样式

对于TextBlock的前景,我需要白色颜色

对于DataGrid的行,我需要黑色颜色

除此之外,对于DataGrid的标题列,我还需要白色

当我在主页上全局应用隐式样式时

<UserControl>
 <UserControl.Resorces>
    <Style targetType="TextBlock">
        <Setter Property="Foreground" Value="White"/>
    </Style>
 </UserControl.Resorces>
</UserControl>

使TextBlock的前景变白操作完成!但除此之外,所有的元素 在DataGrid中(我认为默认的内容元素是textblock)变成白色

它看起来不像你猜的那样白对白:) 那么,我如何特别地将DataGrid的前景元素指定为黑色呢

我可以使用如下所示的相同技术来实现这一点,但这对于每个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>


提前谢谢

如果是我,我会拿出完整的控件模板,并相应地设置它们的样式,而不是尝试进行特殊的setter更改,以覆盖原始模板的位。在Expression Blend中,单击鼠标右键,选择“编辑模板->编辑副本”,并为您的行等拆分模板,然后使用StaticResource隐式应用这些模板。

谢谢您的回答。我做到了。ControlTemplate1是DataGrid的模板。事实上,我之前就把你的建议应用到了Telerik的RadGridView上。你需要设置几十种样式。事实上,我通过使用Telerik的GridView部件样式解决了这个问题。无论如何,你希望编辑和回答时使用+1。是的,我可以从大量的经验告诉你,我通常讨厌处理Telerik的控件模板。但是,如果您已经得到了答案,请确保更新该线程,并将其标记为“已回答”,以便将来帮助他人:)