我是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:DataGridColumnHeader
或DataGridColumnHeader
。它说“......没找到”。在my:DataGridTextColumn
中,我猜HeaderStyle
是设置样式的属性。但我能够为同样定义Style。
另外如何为动态添加的行设置样式?我哪里错了? 任何帮助都非常感谢。
答案 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>
请记住不要给它任何密钥,以便适用于所有标题。