Domanda

Ho un un mucchio di controlli utente (circa 15, una per ogni record) in uno StackPanel che si estende fino in fondo la mia pagina. Ho messo questo in uno ScrollViewer in modo che l'utente non dovrebbe essere necessario scorrere il browser, ma invece può solo scorrere il pannello ScrollViewer.

Qualcuno sa come scorrere programatically a uno specifico controllo utente nel mio pannello di stack. Voglio una discesa nella parte superiore toi represetn ogni record in modo che, quando selezionato i rotoli visualizzatore di scorrimento per il controllo utente.

Qualche idea? Vedo che lo ScrollViewer ha un metodo ScrollToVerticalOffset (), ma non so come avrei calcolare l'offset di questi controlli nel StackPanel.

Grazie!

È stato utile?

Soluzione

immagino qualcosa come il seguente dovrebbe funzionare:

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);
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top