Подтвердить что ты не робот

Как увеличить ширину полосы прокрутки в WPF ScrollViewer?

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

Как установить ширину полосы прокрутки WPF ScrollViewer?

Заметьте, что я не хочу менять ширину всех полос прокрутки на устройстве (выполнимо через настройки Windows) - только те, что в моем приложении.

4b9b3361

Ответ 1

Шаблон ScrollBar запрашивает системные параметры для определения его ширины/высоты (в зависимости от ориентации). Поэтому вы можете переопределить эти параметры:

<ScrollViewer>
    <ScrollViewer.Resources>
        <sys:Double x:Key="{x:Static SystemParameters.VerticalScrollBarWidthKey}">100</sys:Double>
    </ScrollViewer.Resources>
</ScrollViewer>

Ответ 2

Вот решение XAML:

<Style x:Key="{x:Type ScrollBar}" TargetType="{x:Type ScrollBar}">
    <Setter Property="Stylus.IsFlicksEnabled" Value="True" />
    <Style.Triggers>
        <Trigger Property="Orientation" Value="Horizontal">
            <Setter Property="Height" Value="40" />
            <Setter Property="MinHeight" Value="40" />
        </Trigger>
        <Trigger Property="Orientation" Value="Vertical">
            <Setter Property="Width" Value="40" />
            <Setter Property="MinWidth" Value="40" />
        </Trigger>
    </Style.Triggers>
</Style>

Ответ 3

Ответ Kent также может быть применен для легко всех полос прокрутки в вашем приложении, поместив их в ресурсы App.xaml и указав также горизонтальный ключ высоты.

<Application
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    ...
>
    <Application.Resources>
        <sys:Double x:Key="{x:Static SystemParameters.VerticalScrollBarWidthKey}">50</sys:Double>
        <sys:Double x:Key="{x:Static SystemParameters.HorizontalScrollBarHeightKey}">50</sys:Double>
    </Application.Resources>
</Application>