Избавиться от 1-пиксельного отступа / пропуска границы в ListView? - PullRequest
4 голосов
/ 11 августа 2011

Посмотрите на это!
Breaking!
Мне действительно нужно от этого избавиться!
Посмотрите на делькарацию!

<ListView Name="list" BorderThickness="0">

Как это исправить?
Этот разрыв происходит не только с полосой прокрутки, но также с элементами, с или без каких-либо представлений.

Ответы [ 2 ]

8 голосов
/ 11 августа 2011

Похоже, проблема в Template, скорее всего, свойство внутреннего контроля, которое не связано ни с одним из свойств, доступных для ListBox.

Редактирование Vercas: Я обнаружил проблему.
Это шаблон ListView:

<ControlTemplate x:Key="ListView" TargetType="ListBox">
    <Border Background="{TemplateBinding Control.Background}" BorderBrush="{TemplateBinding Control.BorderBrush}" BorderThickness="{TemplateBinding Control.BorderThickness}" Name="Bd" Padding="1" SnapsToDevicePixels="True">
        <ScrollViewer Focusable="False" Padding="{TemplateBinding Control.Padding}">
            <ItemsPresenter SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" />
        </ScrollViewer>
    </Border>
    <ControlTemplate.Triggers>
        <Trigger Property="UIElement.IsEnabled" Value="False">
            <Setter Property="Border.Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" />
        </Trigger>
        <Trigger Property="ItemsControl.IsGrouping" Value="True">
            <Setter Property="ScrollViewer.CanContentScroll" Value="False" />
        </Trigger>
    </ControlTemplate.Triggers>
</ControlTemplate>

Просто измените Paddingграницы до 0, и все готово.
Вот результат, если вы не хотите беспокоиться о поиске собственности.

<ControlTemplate x:Key="ListView" TargetType="ListBox">
    <Border Background="{TemplateBinding Control.Background}" BorderBrush="{TemplateBinding Control.BorderBrush}" BorderThickness="{TemplateBinding Control.BorderThickness}" Name="Bd" Padding="0" SnapsToDevicePixels="True">
        <ScrollViewer Focusable="False" Padding="{TemplateBinding Control.Padding}">
            <ItemsPresenter SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" />
        </ScrollViewer>
    </Border>
    <ControlTemplate.Triggers>
        <Trigger Property="UIElement.IsEnabled" Value="False">
            <Setter Property="Border.Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" />
        </Trigger>
        <Trigger Property="ItemsControl.IsGrouping" Value="True">
            <Setter Property="ScrollViewer.CanContentScroll" Value="False" />
        </Trigger>
    </ControlTemplate.Triggers>
</ControlTemplate>

Не забудьте добавить этот шаблон в ваш ListView!

0 голосов
/ 11 августа 2011

Это будет проще исправить в Blend, если он у вас есть.если нет, то есть бесплатная пробная версия.Вам нужно будет сгенерировать копию шаблона элемента управления для scrollviewer, который вы используете в этом списке.Оттуда вы можете редактировать шаблон для полосы прокрутки.

Шаблон полос прокрутки будет иметь несколько уровней шаблонов, когда вы дойдете до него.Шаблон ListView> ItemsPresenter (в данном случае панель обтекания) Шаблон> Шаблон ScrollViewer> Шаблон ScrollBar.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...