摆脱xaml中GridViewColumnHeader末尾的白线

时间:2011-12-16 18:55:37

标签: wpf xaml gridview removing-whitespace gridviewcolumn

到目前为止,我遇到了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的最末端仍然有一小块白色,如下图所示:

enter image description here

有没有办法删除它?

1 个答案:

答案 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;
}

结果

Example

如果您想覆盖ListView的ControlTemplate,可以找到默认的XAML here