Набор инструментов Silverlight Accordion ScrollViewer - PullRequest
0 голосов
/ 02 февраля 2012

Я заполняю свой Аккордеон предметами из моей базы данных.Я также обернул свой Аккордеон в 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, то это будет работать так, как мне хотелось бы;но я также хочу взаимодействия пользователя с Аккордеоном, так что это не постоянное решение.

1 Ответ

0 голосов
/ 03 февраля 2012

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

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