2009-08-24 92 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>