2010-01-06 3 views
2

J'ai une question concernant le réglage de la propriété HorizontalOffset (en utilisant la méthode ScrollToHorizontalOffset). Au démarrage de mon application, le contenu du scrollviewer est créé dynamiquement (c'est-à-dire que je ne connais pas son étendue au moment du design). Je veux ensuite définir le décalage horizontal du contrôle scrollviewer, mais à ce moment-là sa largeur scrollable est retournée à 0. Appeler UpdateLayout sur le scrollviewer n'aide pas non plus.Silverlight ScrollViewer initial horizontaloffset

Je travaille actuellement autour de cette question en vérifiant la propriété ScrollableWidth du contrôle ScrollViewer en cas de rendu et de faire un appel à ScrollToHorizontalOffset dès ScrollableWidth> 0.

Cela fonctionne bien, mais conduit à un affichage court de la mauvaise position initiale, avant de "rendre" la position est ajustée.

Y at-il quelque chose que je peux faire pour forcer une mise à jour sur le scrollviewer afin que je puisse définir son décalage horizontal sans ce tracas?

Merci d'avance!

Répondre

3

Définissez l'opacité du contrôle Content dans la visionneuse de défilement sur 0. Lorsque vous avez appelé ScrollToHorizontalOffset, définissez l'opacité du contrôle de contenu sur 1. De cette façon, aucun contenu n'est réellement visible tant qu'il n'est pas positionné correctement.

+0

Cela fonctionne, bien sûr - mais est-ce vraiment la seule façon de "résoudre" le problème original? – Grimtron

+0

@Grimtron: Rien de si simple. – AnthonyWJones

+0

Essayez d'interagir avec ScrollViewer dans son événement Loaded. –

2

La hauteur/largeur défilante sera zéro jusqu'à ce que le contenu enfant soit chargé. Jusque-là, il ne sait pas comment il doit être grand - donc la valeur de 0.

Questions connexes