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

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

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

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

【问题讨论】:

    标签: wpf scrollbar width scrollviewer


    【解决方案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>
      

      【讨论】:

      【解决方案4】:

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

      using System.Windows;
      
      public partial class App
      {
          public App()
          {
              Resources.Add(SystemParameters.VerticalScrollBarWidthKey, 50d);
              Resources.Add(SystemParameters.HorizontalScrollBarHeightKey, 50d);
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2014-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-02
        • 1970-01-01
        • 1970-01-01
        • 2015-01-26
        相关资源
        最近更新 更多