Silverlight Toolkit手风琴ScrollViewer

时间:2012-02-02 19:01:24

标签: silverlight silverlight-4.0 accordion silverlight-toolkit scrollviewer

我正在使用数据库中的项目填充手风琴。我还在ScrollViewer中包装了我的手风琴:

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

但是,我找不到最初将ScrollViewer的VerticalOffset显示为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 :(得分:0)

我讨厌这样做但是你的以下内容:

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