41

我正在小型设备上的触摸屏上工作,滚动条的自定义宽度并不好,因为我的要求之一是一切都需要通过手指手势来完成。

如何设置 WPF ScrollViewer 滚动条的宽度?

请注意,我不想更改设备上所有滚动条的宽度(可通过 Windows 设置实现) - 只有我的应用程序中的那些。

4

4 回答 4

75

ScrollBar模板伸出系统参数以确定其宽度/高度(取决于方向)。因此,您可以覆盖这些参数:

<ScrollViewer>
    <ScrollViewer.Resources>
        <sys:Double x:Key="{x:Static SystemParameters.VerticalScrollBarWidthKey}">100</sys:Double>
    </ScrollViewer.Resources>
</ScrollViewer>
于 2009-08-24T09:12:04.243 回答
31

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>
于 2013-09-02T00:27:13.313 回答
27

这是一个 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>
于 2012-08-15T17:07:17.203 回答
3

如果你不想使用 XAML,你可以在Application's 的构造函数中进行,例如

using System.Windows;

public partial class App
{
    public App()
    {
        Resources.Add(SystemParameters.VerticalScrollBarWidthKey, 50d);
        Resources.Add(SystemParameters.HorizontalScrollBarHeightKey, 50d);
    }
}
于 2020-04-21T10:22:09.587 回答