读书人

WPFDataGrid的列题目没有了分割线

发布时间: 2013-09-07 14:12:45 作者: rapoo

WPF,DataGrid的列标题没有了分割线
<DataGrid.ColumnHeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="Background" Value="YellowGreen" />
<Setter Property="HorizontalContentAlignment" Value="Center" />
</Style>
</DataGrid.ColumnHeaderStyle>

WPF,DataGrid的列题目没有了分割线

设置了DataGrid的列头的样式,设置了Background的颜色,这一设置不打紧,列头之间的分割线没有了。
请问,如何设置列头之间的分割线的颜色,找遍了都没找到设置这个的属性


TargetType="Thumb">
<Setter Property="Background" Value="#FF494949">
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Thumb}">
<Border Padding="{TemplateBinding Padding}"
Background="Transparent">
<Rectangle HorizontalAlignment="Center"
Width="1"
Fill="{TemplateBinding Background}" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" Value="#FF494949">
</Setter>
</Style>

<Style x:Key="{x:Type GridViewColumnHeader}"
TargetType="GridViewColumnHeader">
<Setter Property="Foreground" Value="White"/>
<Setter Property="HorizontalContentAlignment"
Value="Center" />


<Setter Property="VerticalContentAlignment"
Value="Center" />

<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="GridViewColumnHeader">
<Grid>
<Border x:Name="HeaderBorder" Background="Black"
Padding="0" Height="22">
<ContentPresenter x:Name="HeaderContent"
Margin="0,0,0,1"
RecognizesAccessKey="True"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Border>
<Thumb x:Name="PART_HeaderGripper"


HorizontalAlignment="Right" Margin="0 0 0 0"
Style="{StaticResource GridViewColumnHeaderGripper}" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>




试试这个吧 自己改下吧 我原来写的 分割线可以出来
[解决办法]
这个你要重写DataGridColumnHeader的模板的。对一个列头用一个三行三列的Grid作为模板。然后至于分隔线,随便你自己怎么设置了。
下面一个很简单的例子,你可以参考下面代码实现自己想要的样式,如加背景色,渐变等。

        <Style TargetType="DataGridColumnHeader"  x:Key="DataGridHeaderStyleSample" >
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="DataGridColumnHeader">
<Grid Name="Root">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>


<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>

<Rectangle x:Name="BackgroundRectangle" Stretch="Fill" Fill="AliceBlue" Grid.ColumnSpan="2" Grid.RowSpan="2" />
<ContentPresenter x:Name="HeaderText" Grid.RowSpan="2" Content="{TemplateBinding Content}" Cursor="{TemplateBinding Cursor}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}" />
<Rectangle Name="VerticalSeparator" Grid.RowSpan="2" Grid.Column="2" Width="1" VerticalAlignment="Stretch" Fill="Black" Visibility="Visible" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>


</Style>
... ...
... ...
<DataGrid ColumnHeaderStyle="{StaticResource DataGridHeaderStyleSample}">


[解决办法]
<Style TargetType="DataGridColumnHeader" x:Key="DataGridColumnHeaderStyle">
<Setter Property="Background">
<Setter.Value>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#EFF1F0" Offset="0"/>
<GradientStop Color="#DDDEE0" Offset="0.5"/>
<GradientStop Color="#CCCDCF" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="Foreground" Value="Black"/>
<Setter Property="FontSize" Value="13"/>
</Style>



<DataGrid Grid.Row="3" Background="White" Name="xamlFinishedTask" Style="{StaticResource DataGridFontFamilyStyle}" AlternatingRowBackground="#f1f8ff" SelectionMode="Single" HorizontalContentAlignment="Left" Margin="5,5,5,5" ColumnHeaderHeight="30" Grid.Column="0" CanUserAddRows="False" AutoGenerateColumns="False" AlternationCount="0" SnapsToDevicePixels="False" BorderBrush="White" GridLinesVisibility="None" RowHeaderWidth="0" IsEnabled="True" DataContext="{Binding}" CanUserReorderColumns="False" CanUserSortColumns="False" ItemsSource="{Binding}" EnableRowVirtualization="False" MinRowHeight="30" Focusable="False" MinColumnWidth="100" BorderThickness="0" >
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">


<Setter Property="Background" Value="White" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="LightYellow"/>
<!-- can be set Gradual color-->
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
<DataGrid.Columns >
<!--{Binding TaskDesc}" -->
<DataGridTemplateColumn Header=" 任务名称" Width="60*" HeaderStyle="{StaticResource DataGridColumnHeaderStyle}" >
<DataGridTemplateColumn.CellTemplate >
<DataTemplate >
<Button ToolTip="{Binding TaskDesc}" HorizontalContentAlignment="Right" HorizontalAlignment="Left" Margin="20,0,0,0" Name="btnName" Cursor="Hand" Tag="{Binding Id}" Content="{Binding TaskDesc}" CommandParameter="{Binding WFTaskType}" Click="btnName_Click" Template="{StaticResource TextBtnTaskName}" />


</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<!---->
</DataGridTemplateColumn>
<DataGridTemplateColumn Header=" 完成时间" Width="40*" HeaderStyle="{StaticResource DataGridColumnHeaderStyle}" >
<DataGridTemplateColumn.CellTemplate >
<DataTemplate >
<TextBlock ToolTip="{Binding Path=DataItem.TaskDesc}" VerticalAlignment="Center" Margin="20,0,0,0" Text="{Binding CreateTime, StringFormat=yyyy年MM月dd日HH时mm分}" HorizontalAlignment="Left" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>

读书人网 >C#

热点推荐