2011-09-07 93 views
1

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

 <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> 

在资源增加了代码风格:

<!-- 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> 

在风格TargetType的,我不能够设置为my:DataGridColumnHeader或只是DataGridColumnHeader。它说“...未找到”。在my:DataGridTextColumn我猜HeaderStyle是设置样式的属性。但是我能够为相同的风格定义。

另外如何设置动态添加行的样式?我哪里错了? 任何帮助是高度赞赏。

回答

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> 
+0

与此运行时,而Show(),我在调试中遇到以下错误“'DataGridColumnHeader'TargetType与元素'DataGridCell'。”类型不匹配。没有调试,它只是退出并没有显示任何东西。 – Tvd

+0

已将datagrid的'CellStyle'设置为'DataGridColumnHeaderStyle'?他们显然是两个不同的东西。 –

+0

但是目标类型即DataGridColumnHeader不可访问。我只能访问我的:DataGrid,DataGridCell,DataGridcellsPanel,DataGridHeaderBorder和DataRow相对于DataGrid - 试图通过xaml通过typtin“ Tvd

2

您可以按照these tutorials,总共有四个,涵盖DataGrid造型的大部分方面。

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

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> 

记得不要给任何键,以便该将适用于所有的头。

+0

“我” 在我的DataGrid的初始化设置:< my:datagrid name =“myGrid”xmlns:my =“clr-namespace:Microsoft.Windows.Controls; assembly = WPFToolkit”itemssource =“{Binding}”。我从那里删除它,并添加在Windows标记的顶部:xmlns:my =“clr-namespace:Microsoft.Windows.Controls; assembly = WPFToolkit” Title =“Window2”。 – Tvd

+0

我只能访问DataGrid中的DataGrid,DataGridCell,DataGridcellsPanel,DataGridHeaderBorder和DataRow。我尝试将TargetType设置为DataCell,然后给AL行赋予该样式,并且仅在mouseover时才会给出标题。我想要Col Headers&Rows的不同样式。 – Tvd

+0

请检查我编辑的响应... –

相关问题