到目前为止,我遇到了GridViewColumnHeaders的几个问题。最初我遇到了一个问题,每个列标题之间都有一小块白色。即使我们将borderthickness设置为0,白线仍然存在。环顾四周之后,我发现我必须使用ControlTemplate将标题更改为默认为具有文本框属性。我用了这段代码:
<Style x:Key="gridHeaderStyle" TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GridViewColumnHeader}">
<TextBox Text="{TemplateBinding Content}"
FontWeight="Bold"
FontFamily="Arial"
FontSize="11"
Foreground="#00648D"
Padding="5,0,5,0"
BorderBrush="#7EB0CC"
BorderThickness="0,0,2,2"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center"
IsReadOnly="True"
Background="Transparent"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
这工作并删除了标题列之间的白色小条,它还阻止了用户移动和调整列的大小,这使得格式化很好。然而,在gridviewcolumnheader的最末端仍然有一小块白色,如下图所示:
有没有办法删除它?
答案 0 :(得分:2)
那个空格是你抓住的对象并用它调整标题大小。我相信即使您重新编写标题模板它也存在,因为它是GridView模板的一部分,而不是标题列
我不确定是否有办法覆盖这些颜色而不覆盖整个GridView模板,但是一旦加载后可以导航Visual Tree并从那里手动设置背景颜色。
以下是使用ListView的Loaded
事件和一些Visual Tree Helpers
private void ListView_Loaded(object sender, RoutedEventArgs e)
{
var thumb = VisualTreeHelpers.FindChild<Thumb>((DependencyObject)sender, "PART_HeaderGripper");
if (thumb == null) return;
thumb.Background = Brushes.Transparent;
var thumbContent = VisualTreeHelpers.FindChild<Border>(thumb);
if (thumbContent == null) return;
thumbContent.Background = Brushes.Transparent;
}
结果
如果您想覆盖ListView的ControlTemplate,可以找到默认的XAML here