1

每次ListView将新项目添加到ItemsSource. 根据这篇文章,我所要做的就是使用以下内容:

private void ScrollToBottom() 
{ 
    var scrollViewer = MyListView.GetFirstDescendantOfType<ScrollViewer>(); 
    scrollViewer.ScrollToVerticalOffset(scrollViewer.ScrollableHeight); 
}

使用WinRT XAML Toolkit. 但是每次我从 ListView 的项目集合中添加或删除元素时,我都会调用此方法。虽然没有自动滚动。

在 XAML 中,还有 ListView :

<ScrollViewer>
    <ListView x:Name="LinesListView"
        ItemsSource="{Binding Lines}"
        ItemTemplate="{StaticResource LineItemTemplate}">
        <ListView.ItemContainerStyle>
            <Style TargetType="ListViewItem">
                <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
            </Style>
        </ListView.ItemContainerStyle>
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel>
                    <StackPanel.ChildrenTransitions>
                        <TransitionCollection>
                            <EntranceThemeTransition/>
                        </TransitionCollection>
                    </StackPanel.ChildrenTransitions>
                 </StackPanel>
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>
    </ListView>
</ScrollViewer>

另一方面,在我上面提供的同一链接上还有另一个解决方案,但即使我尝试在 XAML 中指定它,它也不会显示列表视图项目动画。

我在这里想念什么?

任何建议都非常感谢,谢谢。

4

3 回答 3

3

最后,找到了一种方法:

我不得不摆脱 ScrollViewer,当添加项目时,首先我必须更新 ListView 的布局,然后向下滚动:

myListView.UpdateLayout();
myListView.ScrollToBottom();

ScrollToBottom();方法在WinRT XAML Toolkit.

很简单,虽然我用许多其他方法来解决它......

动画问题通过 XAML 中的一些更改得到了修复:

<ListView.ItemsPanel>
    <ItemsPanelTemplate>
        <StackPanel>
            <StackPanel.Transitions>
                <TransitionCollection>
                    <AddDeleteThemeTransition/>
                 </TransitionCollection>
            </StackPanel.Transitions>
        </StackPanel>
    </ItemsPanelTemplate>
</ListView.ItemsPanel>
于 2013-07-31T12:39:58.040 回答
3

在 Windows 商店应用程序中,我使用了 listViewReceiptDetailList.ScrollIntoView(listViewReceiptDetailList.Items[listViewReceiptDetailList.Items.Count() - 1]);

于 2015-06-04T13:12:48.477 回答
1

尝试将ListViewExtensions.ItemToBringIntoView(来自 WinRT XAML 工具包的附加属性)绑定到您添加的项目。

于 2013-07-30T20:17:45.780 回答