2011-09-07 6 views
1

저는 WPF에 익숙하지 않고 C# 및 .NET3.5를 사용하여 개발 중입니다. 내 창에 WPFToolkit의 DataGrid가 추가되었습니다. 스타일을 열 머리글과 행으로 설정하는 방법을 알아낼 수 없습니까? 행이 동적으로 추가됩니다. 자료에스타일을 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> 

는 스타일 코드를 추가 한 :

스타일의은 TargetType에서
<!-- 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> 

, 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()에서 Debug ''DataGridColumnHeader 'TargetType이'DataGridCell '요소의 유형과 일치하지 않습니다. 디버그가 없으면 종료되고 아무 것도 표시되지 않습니다. – Tvd

+0

DataGrid의 'CellStyle'을'DataGridColumnHeaderStyle'으로 설정 했습니까? 그들은 분명히 다른 두 가지입니다. –

+0

하지만 TargetType 즉DataGridColumnHeader에 액세스 할 수 없습니다. 내 : DataGrid, DataGridCell, DataGridcellsPanel, DataGridHeaderBorder 및 DataRow에 대한 DataGrid에 대한 액세스 권한이 있습니다. xyl을 typtin " Tvd

2

당신은 these tutorials을 따라갈 수 있으며, 전체적으로 4 가지가 있으며 DataGrid 스타일링의 대부분을 다룰 수 있습니다.

링크 된 기사는 시리즈의 두 번째 항목이며 대부분의 기본 사항을 다루고 있습니다.

1

my:DataGridColumnHeader이 보이지 않는지는 아마도 System.Windows.Controls.Primitives 네임 스페이스에 있습니다. my도이 네임 스페이스를 나타 냅니까?

사용

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

대신.

편집

그런 다음

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

그 모든 헤더에 적용됩니다 있도록 모든 키를 제공하지하는 것을 잊지로 DataGridColumnHeader을 참조하십시오.

+0

: < 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와 관련하여 my : DataGrid, DataGridCell, DataGridcellsPanel, DataGridHeaderBorder 및 DataRow에만 액세스 할 수 있습니다. TargetType을 DataCell로 설정하려고 시도했습니다. 그런 다음 al 행에 해당 스타일이 지정되고 마우스 오버시에만 헤더가 제공됩니다. Col Headers & Rows에 대해 다른 스타일을 원합니다. – Tvd

+0

내 편집 된 응답을 확인하십시오 ... –

관련 문제