2009-08-24 11 views
27

Je travaille sur un écran tactile sur un petit appareil et la largeur personnalisée de la barre de défilement n'est pas bonne car l'une de mes exigences est que tout doit être faisable par les gestes des doigts.Comment augmenter la largeur de la barre de défilement dans WPF ScrollViewer?

Comment puis-je définir la largeur de la barre de défilement ScrollViewer de WPF?

Notez que je ne veux pas modifier la largeur de toutes les barres de défilement de l'appareil (via les paramètres Windows) - uniquement celles de mon application.

Répondre

45

Le modèle ScrollBar atteint les paramètres système pour déterminer sa largeur/hauteur (en fonction de l'orientation). Par conséquent, vous pouvez remplacer ces paramètres:

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

merci - il ressemble à ce dont j'ai besoin! J'ai le scrollviewer dans une page - quand j'essaye d'appliquer votre suggestion je reçois sys: Double n'a pas été trouvé -> aucune idée pourquoi? pas vraiment familier avec WPF – JohnIdol

+9

Vous devez mapper l'espace de noms système à System dans mscorlib comme ceci: xmlns: sys = "espace de noms clr: System; assembly = mscorlib" –

+0

merci! parfait maintenant – JohnIdol

18

Voici une solution 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

Qu'est-ce que c'est "IsFlicksEnabled"? –

+1

IsFlicksEnabled est lié à la possibilité de répondre à des gestes lorsqu'il est utilisé dans une configuration d'écran tactile: https://msdn.microsoft.com/fr-fr/library/system.windows.input.stylus.isflicksenabled(v=vs.100) .aspx –

16

La réponse de Kent peut également être appliqué facilement tous scrollbars dans votre application en le plaçant dans vos App.xaml ressources et en spécifiant la touche de hauteur horizontale également.

<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> 
Questions connexes