Набор инструментов Silverlight Accordion ScrollViewer

Я заполняю свой Аккордеон элементами из своей базы данных. Я также завернул свой Аккордеон в ScrollViewer:

<ScrollViewer Name="LayoutScrollViewer">
    <toolkit:Accordion Name="ItemsAccordion" ItemTemplate="{StaticResource AccordionHeaderTemplate}" ContentTemplate="{StaticResource AccordionContentTemplate}"></toolkit:Accordion>
</ScrollViewer>

Однако я не могу найти способ изначально показать VerticalOffset ScrollViewer равным 0. Он продолжает прокручиваться вниз всякий раз, когда содержимое моей базы данных завершает загрузку. Я пробовал в коде:

void CatalogItem_Loaded(object sender, RoutedEventArgs e)
{
    WebServiceClient client = new WebServiceClient();
    client.GetCatalogItemsAsync(countID);
    client.GetCatalogItemsCompleted += new EventHandler<GetCatalogItemsCompletedEventArgs>(client_GetCatalogItemsCompleted);
}

void client_GetCatalogItemsCompleted(object sender, GetCatalogItemsCompletedEventArgs e)
{
    ItemsAccordion.ItemsSource = e.Result;

    UpdateScrollViewer();
}

 private void UpdateScrollViewer()
 {
     LayoutScrollViewer.ScrollToVerticalOffset(0);
 }

Но это не работает. Я также пробовал в UpdateScrollViewer () сделать:

LayoutScrollViewer.IsHitTestVisible = false;
LayoutScrollViewer.IsHitTestVisible = true;

что тоже не работает. Если я оставлю IsHitTestVisible = false, то все будет работать так, как мне хотелось бы; но я также хочу, чтобы пользователь взаимодействовал с Accordion, так что это не постоянное решение.


person user1036379    schedule 02.02.2012    source источник


Ответы (1)


Ненавижу это делать, но вот тебе следующее:

void client_GetCatalogItemsCompleted(object sender, GetCatalogItemsCompletedEventArgs e)
{
    ItemsAccordion.ItemsSource = e.Result;
    UpdateLayout();
    UpdateScrollViewer();
}
person MyKuLLSKI    schedule 02.02.2012
comment
Нет, это не сработало. Как ни странно, он переместил полосу прокрутки на то, что похоже на ScrollToVerticalOffset (90). - person user1036379; 03.02.2012
comment
попробуйте прокрутить до отрицательного смещения LayoutScrollViewer.ScrollToVerticalOffset (-1); - person MyKuLLSKI; 03.02.2012
comment
Работает ли это: LayoutScrollViewer.ScrollToVerticalOffset (double.NegativeInfinity) - person MyKuLLSKI; 03.02.2012
comment
Что ж, я думаю, что нашел причину, но не знаю почему. ContentTemplate = {StaticResource AccordionContentTemplate} имеет RichTextBox, связывающий некоторый контент. Если я изменю его на TextBlock и привяжу тот же контент, он останется прокрученным вверх даже без UpdateScrollViewer (). Однако я пока застрял без сложного форматирования. - person user1036379; 03.02.2012