WPF 修改DataGrid的表头样式后,鼠标拖动不能改变列宽大小

最近在做一个公司的WPF项目,使用DataGrid控件实现一个表格,由于自带样式不美观,便自己修改了DataGrid的样式,修改后发现列宽不能使用鼠标作用拖动来改变列宽大小。

问题代码:

<!--设置表头样式-->
<Setter Property="ColumnHeaderStyle">
      <Setter.Value>
          <Style TargetType="DataGridColumnHeader">
              <Setter Property="Background" Value="Transparent"/>
              <Setter Property="FontSize" Value="14"/>
              <Setter Property="Foreground" Value="#3F4C5D"/>
              <Setter Property="UseLayoutRounding" Value="True"/>
              <Setter Property="Template">
                  <Setter.Value>
                       <ControlTemplate TargetType="DataGridColumnHeader">
                           <Border Width="50" Margin="-1,0" BorderBrush="#E9ECF1" 
                               BorderThickness="1 0 0 1"
                               SnapsToDevicePixels="True" UseLayoutRounding="True">
                               <ContentPresenter Margin="5,0" 
                                 HorizontalAlignment="Center" VerticalAlignment="Center" />
                            </Border>                                
                        </ControlTemplate>
                  </Setter.Value>
               </Setter>
           </Style>
      </Setter.Value>
</Setter>

解决方案:添加Thumb控件实现拖动效果

        <!--设置表头样式-->
        <Setter Property="ColumnHeaderStyle">
            <Setter.Value>
                <Style TargetType="DataGridColumnHeader">
                    <Setter Property="Background" Value="Transparent"/>
                    <Setter Property="FontSize" Value="14"/>
                    <Setter Property="Foreground" Value="#3F4C5D"/>
                    <Setter Property="UseLayoutRounding" Value="True"/>
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="DataGridColumnHeader">
                                <!--<Border Width="50" Margin="-1,0" 
                                     BorderBrush="#E9ECF1" BorderThickness="1 0 0 1"
                                     SnapsToDevicePixels="True" UseLayoutRounding="True">
                                    <ContentPresenter Margin="5,0" 
                                         HorizontalAlignment="Center" 
                                         VerticalAlignment="Center" />
                                </Border>-->
                                <Grid>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="*"/>
                                        <ColumnDefinition Width="Auto" />
                                    </Grid.ColumnDefinitions>
                                    <Border Grid.Column="0" BorderThickness="0,0,0,1" 
                                        BorderBrush="#E9ECF1">
                                        <ContentPresenter Margin="5,0" 
                                            HorizontalAlignment="Center" 
                                            VerticalAlignment="Center" />
                                    </Border>
                                    <Thumb Grid.Column="1" 
                                         x:Name="PART_RightHeaderGripper"
                                         Cursor="SizeWE" Width="1" Height="25" 
                                         BorderThickness="1" 
                                         BorderBrush="#E9ECF1" 
                                         VerticalAlignment="Center"
                                         HorizontalAlignment="Right"/>
                                </Grid>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </Setter.Value>
        </Setter>

这样就可以实现鼠标拖动改变列宽大小啦。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值