Избавление от белой линии в конце GridViewColumnHeader в xaml - PullRequest
1 голос
/ 16 декабря 2011

У меня до сих пор было несколько проблем с 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>

Это сработало и убрало небольшую полоску белого между столбцами заголовка, а также предотвратило перемещение и изменение размера столбца, который испортил форматирование, что было хорошо.Тем не менее, в самом конце заголовка столбца grid все еще остается небольшое пятно белого, как показано на рисунке ниже:

enter image description here

Есть ли способ удалить это тоже?

1 Ответ

2 голосов
/ 03 января 2012

Этот пробел является объектом, который вы берете и изменяете размер заголовка. Я считаю, что он существует, даже если вы переписываете шаблон заголовка, потому что он является частью шаблона GridView, а не столбца заголовка

Я не уверен, есть ли способ перезаписать эти цвета без перезаписи всего шаблона GridView, однако вы можете перемещаться по дереву визуалов после его загрузки и вручную устанавливать цвет фона оттуда.

Вот пример использования Loaded события ListView и некоторых 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

Если вы предпочитаете перезаписать ControlTemplate ListView, вы можете найти XAML по умолчанию здесь

...