使用Mahapps.Metro时GridView最后一个列头显示双竖线如何解决

WPF MahApps.Metro下GridView最后一列头双竖线修复方案
你修改列头和gripper样式不生效的核心原因是,没有处理GridView自动生成的末尾占位列头——这个列头的Role属性值为Padding,它自带的分隔边框和最后一个业务列的右边框重叠,就会显示出双竖线。
按以下步骤调整即可:
- 第一步:在资源字典中重写GridViewColumnHeader样式,直接折叠末尾的占位列头
<Style TargetType="{x:Type GridViewColumnHeader}" BasedOn="{StaticResource MahApps.Styles.GridViewColumnHeader}"> <Style.Triggers> <Trigger Property="Role" Value="Padding"> <Setter Property="Visibility" Value="Collapsed"/> <Setter Property="Width" Value="0"/> </Trigger> </Style.Triggers> </Style>
加Width=0是兼容1.x版本的MahApps.Metro,避免折叠后末尾出现空白间隙
- 第二步:如果完成第一步后仍有双竖线残留,重写gripper样式清除多余边框
<Style x:Key="MahApps.Styles.Thumb.GridViewColumnHeaderGripper" TargetType="{x:Type Thumb}" BasedOn="{StaticResource MahApps.Styles.Thumb.GridViewColumnHeaderGripper}"> <Setter Property="BorderThickness" Value="0"/> <Setter Property="HorizontalAlignment" Value="Right"/> </Style>
调整完成后重新运行项目即可,不需要修改后台列定义的逻辑,你之前确认的4列结构不会受影响。
注意:如果项目用的是MahApps.Metro 2.4以上版本,只需要第一步就能解决问题,不需要额外修改gripper样式,新版本默认已经处理了gripper的边框重叠问题。
内容的提问来源于stack exchange,提问作者Alexey Titov
相关产品推荐
相关产品推荐

