首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2013-09-07 
WPF,DataGrid的列标题没有了分割线DataGrid.ColumnHeaderStyleStyle TargetTypeDataGridColumnHeader

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>

热点排行