سؤال

لدي حفنة من عناصر تحكم المستخدم (حوالي 15 ، واحدة لكل سجل) في stackpanel التي تمتد إلى أسفل صفحتي. لقد وضعت هذا في ScrollViewer حتى لا يضطر المستخدم إلى تمرير المتصفح ولكن بدلاً من ذلك يمكنه فقط تمرير لوحة ScrollViewer.

أي شخص يعرف كيفية التمرير برمجيًا إلى عنصر تحكم مستخدم معين في لوحة المكدس الخاصة بي. أريد منسدلة في الجزء العلوي من Toi تمثل كل سجل ، بحيث يتم تمرير عارض Scroll إلى عنصر تحكم المستخدم.

أي أفكار؟ أرى أن ScrollViewer لديه طريقة scrolltoverticoffset () ، لكنني لا أعرف كيف سأحسب إزاحة عناصر التحكم هذه في stackpanel.

شكرًا!

هل كانت مفيدة؟

المحلول

أتصور أن شيئًا مثل ما يلي سيعمل:

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);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top