2010-05-19 7 views
1

Comment puis-je déterminer par programme la largeur ou la hauteur d'une barre de défilement dans ScrollViewer? Pas la taille actuelle basée sur l'état actuel du ScrollViewer (puisque je peux simplement tester la visibilité de la barre de défilement et calculer par rapport à ViewerPortWidth/Height et ScrollViewer ActualWidth/Height).Taille de la barre de défilement dans ScrollViewer

J'ai besoin de savoir quelle taille la de la barre de défilement pourrait être basée sur la largeur modélisée. La valeur par défaut est 18 (avec une marge de -1). Mais nous savons tous ce qui pourrait arriver si j'utilise le nombre magique de 18 dans mes calculs. Certains de mes utilisateurs pourraient modéliser les Scrollbars dans le ScrollViewer alors je serais foutu.

Merci!

+0

Salut, désolé, je ne comprends pas le problème - pourquoi ne pouvez-vous pas utiliser par exemple. (ActualWidth - ViewPortWidth)? –

+0

duplication possible de [Déterminer la largeur de la barre de défilement verticale dans un ScrollViewer] (http://stackoverflow.com/questions/2777384/determine-the-width-of-the-vertical-scroll-bar-in-a- scrollviewer) –

+0

Ce n'est pas un doublon, il n'y a pas de telles propriétés SystemParameters dans Silverlight – olegz

Répondre

2

Vous pouvez utiliser SystemParameters.ScrollWidth.

+1

Il n'y a pas de propriété ScrollWidth sur SystemParameters dans silverlight – olorin

1

Vous pouvez utiliser VisualTreeHelper Silverlight Toolkit de la manière suivante:

var verticalScrollbar = view.GetVisualChildren().OfType<FrameworkElement>() 
     .FirstOrDefault(e => e.Name == "VerticalScrollBar"); 
var horizontalScrollbar = view.GetVisualChildren().OfType<FrameworkElement>() 
     .FirstOrDefault(e => e.Name == "HorizontalScrollBar"); 
var width = verticalScrollbar == null ? 0 : verticalScrollbar.ActualWidth; 
var height = horizontalScrollbar == null ? 0 : horizontalScrollbar.ActualHeight; 

vue est une instance de ScrollViewer (je suppose que vous avez l'instance).

Questions connexes