2011-09-07 68 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

請檢查我編輯的響應... –

相關問題