2010-04-19 6 views
0

J'ai un tas de contrôles utilisateur (environ 15, un pour chaque enregistrement) dans un panneau de pile qui s'étend en bas de ma page. Je l'ai mis dans un scrollviewer afin que l'utilisateur n'ait pas à faire défiler le navigateur mais à la place il peut juste faire défiler le panneau scrollviewer. ANyone sait comment faire défiler par programme vers un contrôle utilisateur spécifique dans mon panneau de pile. Je veux une liste déroulante en haut pour représenter chaque enregistrement de sorte que lorsque sélectionné, la visionneuse défile jusqu'à ce contrôle utilisateur.Fonctionnalité de balise d'ancrage Silverlight?

ANy pensées? Je vois que le scrollviewer a une méthode ScrollToVerticalOffset() mais je ne sais pas comment je calculerais le décalage de ces contrôles dans le stackpanel.

Merci!

Répondre

0

J'imagine quelque chose comme ce qui suit fonctionnerait:

void ScrollToUserControl(UserControl uc) 
{ 
    double amountToScroll = 0; 
    for (int i = 0; i < stackPanel.Children.Count; i++) 
    { 
     if (stackPanel.Children[i] == uc) 
      break; 

     amountToScroll += stackPanel.Children[i].ActualHeight; 

    } 

    scrollViewer.UpdateLayout(); 
    scrollViewer.ScrollToVerticalOffset(amountToScroll); 
} 
+0

Cela a parfaitement fonctionné! Merci beaucoup! – Eric