2009-08-24 88 views
27

我正在一个小设备的触摸屏上工作,滚动条的自定义宽度并不好,因为我的一个要求是,一切都需要通过手势进行操作。如何增加WPF ScrollViewer中的滚动条宽度?

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

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

回答

45

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

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

谢谢 - 它看起来像我需要的!我有页面中的滚动查看器 - 当我尝试应用您的建议时,我得到了sys:Double未找到 - >任何线索为什么?不太熟悉WPF – JohnIdol 2009-08-24 09:22:24

+9

您需要将sys命名空间映射到mscorlib中的System,如下所示:xmlns:sys =“clr-namespace:System; assembly = mscorlib” – 2009-08-24 10:11:56

+0

thanks!现在完美 – JohnIdol 2009-08-24 10:36:55

18

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

这是什么“IsFlicksEnabled”? – 2015-11-16 19:35:56

+1

IsFlicksEnabled与在触摸屏设置中是否可以响应手势相关: https://msdn.microsoft.com/en-us/library/system.windows.input.stylus.isflicksenabled(v=vs.100 )的.aspx – 2016-01-17 09:14:56

16

肯特的回答也可以适用于容易所有滚动条在您的应用程序通过将其放置在您的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>