我正在尝试在 WPF 中制作自定义网格视图,但我刚刚意识到,正如这个 link 所说:
GridViewHeaderRowPresenter 类 执行列标题的布局 在 GridView 中并放置一个附加的 列标题位于末尾以添加空间
并且由于末尾有附加的列标题,最后一列的右侧还有一个额外的列。所以我想知道是否可以修改它,请参考下面的图片
我的问题是:
谢谢
经过一番摸索后,我设法通过在几个地方设置负边距来隐藏这个额外的列。虽然很 hacky 但很有效:
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="Margin" Value="0,0,-7,1"/>
</Style>
<Style TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="Margin" Value="0,0,-2,0"/>
</Style>
也许添加
<Trigger Property="Role" Value="Padding">
<Setter Property="Visibility" Value="Collapsed"/>
</Trigger>
也在 GridViewColumnHeader 样式中。
第一个似乎可以根据需要设置为负数;当它不能再减少时,它就会达到上限。这样做仍然会在标题的右侧留下一个 2px 的间隙,这是第二种样式修复的。
唉,-2 边距适用于所有 GridViewColumnHeaders(并且样式触发器方法似乎不起作用),因此它可能会稍微扰乱内部边框和内容对齐,但如果可以忍受,则效果很好。
编辑:实际上是的,划伤-2边距,它有太多负面影响。
在
<Style x:Key="{x:Static GridView.GridViewScrollViewerStyleKey}" TargetType="{x:Type ScrollViewer}">
里面你会发现一个<GridViewHeaderRowPresenter>
;将其 Margin 设置为 "0,0,-2,0"
,您将获得相同的效果,但没有任何缺点。
要删除第一列“C”,您可以将以下属性添加到 DataGrid 定义中:
RowHeaderWidth="0"