Ширина ScrollViewer будет уже - PullRequest
1 голос
/ 01 июня 2019

Я хочу переопределить ширину полосы прокрутки ScrollViewer в WPF. Мне удается расширить его ширину, но когда я попытался сделать его стройнее, это не сработало. Кажется, что он имеет минимальную ширину, которую нельзя переопределить. Ниже приведен код, который у меня есть.

Почему приведенный ниже код не работает для уменьшения ширины полосы прокрутки?

Спасибо

           <ScrollViewer.Resources>
                <Style TargetType="ScrollBar">
                    <Style.Triggers>
                        <Trigger Property="Orientation" Value="Vertical">
                            <Setter Property="Width" Value="20"/>
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </ScrollViewer.Resources>

1 Ответ

0 голосов
/ 01 июня 2019

Вам нужно отредактировать шаблон.

Поместите курсор редактора внутри тега ScrollViewer, а затем в окне свойств перейдите в «Разное -> Шаблон», нажмите маленький прямоугольник справа и выберите«Преобразовать в новый ресурс» из всплывающего меню:

enter image description here

Это создаст новый шаблон, содержащий, помимо прочего, полосу прокрутки с именем PART_VerticalScrollBar,Наведите курсор на этот тег полосы прокрутки и повторите вышеизложенное для шаблона, который также создаст шаблон элемента управления, который начинается следующим образом:

    <ControlTemplate x:Key="ScrollBarControlTemplate1" TargetType="{x:Type ScrollBar}">
        <Grid x:Name="Bg" SnapsToDevicePixels="True">
            <Grid.RowDefinitions>
                <RowDefinition MaxHeight="{DynamicResource {x:Static SystemParameters.VerticalScrollBarButtonHeightKey}}"/>

Теперь установите MaxWidth=10 (или что-то еще в этом элементе Grid).

Единственная другая проблема, с которой вы можете столкнуться, это то, что если вы сделаете ее слишком маленькой, стрелки вверх / вниз на кнопках полосы прокрутки могут исчезнуть, потому что их шаблон по умолчанию размещает поле вокруг их пути:

<Path x:Name="ArrowTop" Data="M0,4C0,4 ..etc ... " Fill="#FF606060" Margin="3,4,3,3" Stretch="Uniform"/>

Эту проблему легко решить, удалив этот параметр поля и / или заменив путь на что-то другое.

...