如何让用户滚动浏览WPF中ListView中的最后一项?

时间:2016-08-29 15:08:31

标签: wpf listview

我在WPF中有一个ListVIew,在程序运行时会收到很多日志消息。 它会自动滚动到最新的项目,这正是我想要的方式(很难找到如何做到这一点,感谢stackoverflow我做到了)。

当程序完成并且我正在检查日志(或者这个小程序的未来用户),并且想要向下滚动到最后一个项目,所以最后一个项目很舒服地在中间我的屏幕。

我不能简单地插入一些空条目,因为程序可能会再次运行,或者在第一个程序之后运行另一个程序,从而在日志中添加更多内容。对于空条目,我只会在那里有一个大洞。

现在,我的ListView wpf部分如下所示:

        <ListView Margin="5 5 5 5" VerticalAlignment="Stretch" ScrollViewer.CanContentScroll="False" Background="Transparent"
                  ItemsSource="{Binding Source={x:Static local:LOG.LogList}, Mode=OneWay}">
            <i:Interaction.Behaviors>
                <local:AutoScrollToLastItemBehavior />
            </i:Interaction.Behaviors>

CanContentScroll可以按物理空间滚动,而不是逻辑。否则,View将始终挂钩到一个条目。

1 个答案:

答案 0 :(得分:0)

我觉得为了实现这一点,你需要使用列表框ItemTemplate,并提供两个DataTemplates,1表示“LogItem”类型,1表示“FooterItem”类型,其中FooterItem的模板包含一个余量。在您的代码后面可能会向项目源添加项目,始终在“FooterItem”对象之前插入,而不是附加到项目列表。

不确定这是否有用,但这是我会采取的一种方式。