Pregunta

Tengo un un montón de controles de usuario (alrededor de 15, uno para cada registro) en un StackPanel que se extiende hacia abajo a mi página. Me poner esto en un ScrollViewer de manera que el usuario no tenga que desplazarse hacia el navegador, pero en cambio sólo puede desplazarse el panel ScrollViewer.

Alguien sabe cómo desplazarse mediante programación a un control de usuario específico en mi panel de pila. Quiero una lista desplegable en la parte superior toi represetn cada registro de manera que cuando se seleccionan los rollos de visualización de desplazamiento para que el control de usuario.

¿Alguna idea? Veo que la ScrollViewer tiene un método ScrollToVerticalOffset (), pero no sé cómo iba a calcular el desplazamiento de estos controles en el StackPanel.

Gracias!

¿Fue útil?

Solución

Me imagino algo como lo siguiente funcionaría:

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);
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top