如何增加 WPF ScrollViewer 中的滚动条宽度?

Posted

技术标签:

【中文标题】如何增加 WPF ScrollViewer 中的滚动条宽度?【英文标题】:How to increase scrollbar width in WPF ScrollViewer? 【发布时间】:2010-11-22 05:12:48 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

谢谢 - 它看起来像我需要的!我在页面中有滚动查看器 - 当我尝试应用您的建议时,我得到 sys:Double 未找到 -> 任何线索为什么?对 WPF 不太熟悉 您需要将 sys 命名空间映射到 mscorlib 中的 System,如下所示:xmlns:sys="clr-namespace:System;assembly=mscorlib"【参考方案2】:

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>

【讨论】:

【参考方案3】:

这是一个 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>

【讨论】:

这个“IsFlicksEnabled”是关于什么的? IsFlicksEnabled 与在触摸屏设置中使用时是否可以响应手势有关:msdn.microsoft.com/en-us/library/…【参考方案4】:

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

using System.Windows;

public partial class App

    public App()
    
        Resources.Add(SystemParameters.VerticalScrollBarWidthKey, 50d);
        Resources.Add(SystemParameters.HorizontalScrollBarHeightKey, 50d);
    

【讨论】:

以上是关于如何增加 WPF ScrollViewer 中的滚动条宽度?的主要内容,如果未能解决你的问题,请参考以下文章

WPF 如何流畅地滚动ScrollViewer

WPF 如何流畅地滚动ScrollViewer 简单实现下

如何删除WPF ScrollViewer边框

wpf scrollviewer控件的使用

WPF中ScrollViewer 的问题。

每次我在 WPF 中加载时如何使 Listbox 的 ScrollViewer 滚动到顶部