如何将Style设置为WPFToolkit DataGrid?

时间:2011-09-07 11:26:03

标签: c# wpf xaml wpfdatagrid

我是WPF的新手,正在使用C#和.NET3.5进行开发。我有一个WPFToolkit的DataGrid添加到我的窗口。我无法弄清楚如何将Style设置为列标题和行?行是动态添加的。

        <my:datagrid name="myGrid" xmlns:my="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit" itemssource="{Binding }" autogeneratecolumns="False">
                 SelectionMode="Extended" SelectionUnit="FullRow" CanUserReorderColumns="False" 
                 ColumnHeaderHeight="42" Background="#FFF7F7F7" BorderBrush="Transparent" 
                 HorizontalGridLinesBrush="#FFEAEAEA" VerticalGridLinesBrush="#FFEAEAEA" 
                 HeadersVisibility="Column" RowHeaderWidth="0" HorizontalContentAlignment="Center" 
                 VerticalContentAlignment="Center" ClipboardCopyMode="None" MinRowHeight="28" 
                 Rowremoved="#FFF7F7F7" RowDetailsVisibilityMode="Visible" RowHeight="28" 
                 DataContextChanged="serverGrid_DataContextChanged">
        <my:datagrid.columns>
            <my:datagridtextcolumn header="Enabled" width="120" binding="{Binding Path=Name}" />
            <my:datagridtextcolumn header="Enabled" width="70" binding="{Binding Path=Country}" />
            <my:datagridtextcolumn header="Enabled" width="100" binding="{Binding Path=Description}" />
        </my:datagrid.columns>

    </my:datagrid>

在参考资料中添加了Style的代码:

    <!-- DataGridColumnHeader-->
    <Style x:Key="ColumnHeaderStyle" TargetType="{x:Type Thumb}">
        <setter property="Background" value="#9DCFD0" />
        <setter property="FontFamily" value="Arial Rounded MT" />
        <setter property="FontSize" value="14" />
        <setter property="FontWeight" value="Bold" />
        <setter property="Foreground" value="#00545B" />
        <setter property="VerticalContentAlignment" value="Center" />
        <setter property="HorizontalContentAlignment" value="Center" />
    </Style>

在Style的TargetType中,我无法设置为my:DataGridColumnHeaderDataGridColumnHeader。它说“......没找到”。在my:DataGridTextColumn中,我猜HeaderStyle是设置样式的属性。但我能够为同样定义Style。

另外如何为动态添加的行设置样式?我哪里错了? 任何帮助都非常感谢。

3 个答案:

答案 0 :(得分:2)

您可以关注these tutorials,共有四个,涵盖DataGrid样式的大多数方面。

链接文章是本系列的第二篇,涵盖了大部分基础知识。

答案 1 :(得分:2)

你可以这样做:

首先是标题的名称空间:

xmlns:Custom="http://schemas.microsoft.com/wpf/2008/toolkit"

那么这就是风格:

<Style x:Key="DataGridColumnHeaderStyle" TargetType="{x:Type Custom:DataGridColumnHeader}">
        <Setter Property="HorizontalAlignment" Value="Center"></Setter>
        <Setter Property="Foreground" Value="#654b24"></Setter>
        <Setter Property="FontWeight" Value="bold"></Setter>
        <Setter Property="Height" Value="30"></Setter>
        <Setter Property="Background">
            <Setter.Value>
                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                    <GradientStop Color="#f7f3de" Offset="0.1"/>
                    <GradientStop Color="#Fcfcfc" Offset="1"/>
                </LinearGradientBrush>
            </Setter.Value>
        </Setter>
    </Style>

答案 2 :(得分:1)

您看不到my:DataGridColumnHeader的可能原因是因为它位于System.Windows.Controls.Primitives命名空间中。 my是否也表示此命名空间?

使用

 xmlns:Primitives="clr-namespace:Microsoft.Windows.Controls.Primitives;assembly=WPFToolkit"

代替。

修改

然后将DataGridColumnHeader称为

 <Style TargetType="{x:Type Primitives:DataGridColumnHeader}">
     ....
 </Style>

请记住不要给它任何密钥,以便适用于所有标题。