2017-08-28 8 views
0

データグリッドの列ヘッダーをスタイル設定しようとすると、次の2つの問題が発生します。DataGridColumnHeaderスタイルの問題

私が欲しいもの:私は自分のヘッダーを境界線と余白を付けて境界線に書きたいと思います。画像を参照してください:what I want

私は何を得る:私は境界線が2つのヘッダーの間に描画されていることを発見し、プラスあなたのようにように私は、グリップ(白グリップ、灰色の影)の影を取り除くことはできませんここでwhat I get

に画像に表示されて、ヘッダーのための私のスタイルです:

<Style TargetType="{x:Type DataGridColumnHeader}"> 
    <Setter Property="VerticalContentAlignment" Value="Center" /> 
    <Setter Property="Height" Value="30" /> 
    <Setter Property="SeparatorBrush" Value="{StaticResource ScbWhite}" /> 
    <Setter Property="FontWeight" Value="Bold" /> 
    <Setter Property="Foreground" Value="{StaticResource ScbBlue1}"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type DataGridColumnHeader}"> 
       <Grid Margin="{TemplateBinding Padding}"> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="*" /> 
         <ColumnDefinition Width="Auto" /> 
        </Grid.ColumnDefinitions> 
        <Border x:Name="columnHeaderBorder" 
          TextBlock.FontWeight="Bold" 
          TextBlock.Foreground="{StaticResource ScbBlue1}" 
          BorderThickness="2" 
          BorderBrush="{StaticResource ScbBlue1}" 
          Background="{StaticResource ScbWhite}" 
          Width="{TemplateBinding Width}" 
          Margin="3,3,3,3" 
          Padding="3,0,3,0"> 
         <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
              VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
              SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> 
        </Border> 
        <!--BorderBrush="{Binding VerticalGridLinesBrush, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}"--> 
        <Thumb x:Name="PART_RightHeaderGripper" Grid.Column="1" 
          HorizontalAlignment="Right" 
          Width="6" BorderThickness="0" 
          BorderBrush="{StaticResource ScbWhite}" 
          Background="{StaticResource ScbWhite}" 
          Cursor="SizeWE"> 
         <Thumb.BitmapEffect> 
          <DropShadowBitmapEffect Color="Transparent" Opacity="0"/> 
         </Thumb.BitmapEffect> 
        </Thumb> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

してください、私は私が欲しいものを得るために何ができるのでしょうか?

答えて

0

DataGridは、空の列見出しを追加して、他の列が全幅をカバーしていない場合のスペースを埋めます。そのヘッダーはnullです。私はControlTemplate Triggerを追加して、コンテンツのないヘッダーの境界を透明にしました。

私はThumb.Templateを変更し、私は私のプロジェクトのコンパイルを行うために、テンプレートにいくつかのStaticResourcesを交換して、フラット白い長方形

<Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="{x:Type DataGridColumnHeader}"> 
      <Grid Margin="{TemplateBinding Padding}"> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="*" /> 
        <ColumnDefinition Width="Auto" /> 
       </Grid.ColumnDefinitions> 
       <Border x:Name="columnHeaderBorder" 
         TextBlock.FontWeight="Bold" 
         TextBlock.Foreground="blue" 
         BorderThickness="2" 
         BorderBrush="blue" 
         Background="white" 
         Width="{TemplateBinding Width}" 
         Margin="3,3,3,3" 
         Padding="3,0,3,0"> 
        <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
           VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
           SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" /> 
       </Border> 
       <!--BorderBrush="{Binding VerticalGridLinesBrush, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}"--> 
       <Thumb x:Name="PART_RightHeaderGripper" Grid.Column="1" 
         HorizontalAlignment="Right" 
         Width="6" BorderThickness="0" 
         Margin="0,3" 
         BorderBrush="white" 
         Background="white" 
         Cursor="SizeWE"> 
        <Thumb.Template> 
         <ControlTemplate> 
          <Border Background="{TemplateBinding Background}"></Border> 
         </ControlTemplate> 
        </Thumb.Template> 
       </Thumb> 
      </Grid> 
      <ControlTemplate.Triggers> 
       <Trigger Property="Content" Value="{x:Null}"> 
        <!--<Setter Property="BorderBrush" Value="Red" TargetName="columnHeaderBorder"/>--> 
        <Setter Property="BorderBrush" Value="Transparent" TargetName="columnHeaderBorder"/> 
       </Trigger> 
      </ControlTemplate.Triggers> 
     </ControlTemplate> 
    </Setter.Value> 
</Setter> 

//製の親指apperanceを変更するには。それらを元に戻すか、テンプレートの変更部分だけをコピーしてください

+0

これは完全に動作します。ありがとう、トン! – emiliegue

関連する問題