ListView:如何始终滚动到底部

时间:2014-01-07 09:43:10

标签: c# xaml listview winrt-xaml windows-8.1

我有一个列表视图,当我将项目添加到“项目”列表中时,我想滚动到底部。

当我添加项目时,它们会出现在ListView中,但是当我达到屏幕上限时,列表仍会显示顶部,新项目会添加到底部。如果我向下滚动,我可以看到新项目。我希望它能自动滚动到底部,以便我总能看到列表中的最新项目。

<ListView 
         x:Name="lvBasketContent" 
         Grid.Row="1" 
         ItemsSource="{Binding Items}"
         ItemContainerStyle="{StaticResource ListViewItemStyle1}" 
         HorizontalContentAlignment="Stretch"
         VerticalContentAlignment="Bottom" 
         SelectionMode="None" 
         IsSwipeEnabled="False" 
         VerticalAlignment="Top"
         >

有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:1)

您需要create a custom behaviorListView的派生实现。

此类应监视ItemsSource集合的更改并调用ListViewBase.ScrollIntoView(Object),并传入要显示的项目。在您的情况下,这可能是最后添加的。

我推荐了这种行为,因为它保持代码模块化,因为您可以通过仅更改xaml在解决方案的任何列表视图中使用它。

我不打算为你编写代码,因为行为是第一手学习的非常有用的技巧。第一个链接应该为您提供破解所需的一切。

答案 1 :(得分:0)

你可以试试把它放在你的代码中吗?每次将项目添加到列表框时,请尝试将其命名为

//Add an item in the listbox
lvBasketContent.Items.Add(...);

//...

//Scroll to bottom
lvBasketContent.SelectedIndex = lvBasketContent.Items.Count -1
lvBasketContent.ScrollIntoView(lvBasketContent.SelectedItem)