2010-08-26 19 views
0

我有一个ListView,经常更新,以不规则的间隔。滚动到新项目的底部。我的方法冻结滚动条

我希望它能够在接收到更新时将项目滚动到视图中。

我知道代码做到这一点:

logListView.ScrollIntoView(logListView.Items[logListView.Items.Count - 1]); 

我不知道放在哪里,这样,当ListView控件更新它发生。

我试过把它放在ListView的LayoutUpdated事件处理程序中,但是当我尝试在没有更新的期间滚动时(我知道没有任何更新,因为我已经将消息泵关闭)视图卡在底部。我猜这是因为滚动引发了一个LayoutUpdated事件。

如何让ListView在收到新项目时滚动到底部?

回答

2

看看WPF ListBox Scroll when item added的答案。 Items属性是一个ItemCollection,它实现INotifyCollectionChanged,所以你可以使用CollectionChanged事件。它应该适用于ListView和ListBox,但是如果你使用ScrollIntoView,那么我怀疑你有一个ListBox。

INotifyCollectionChanged collection = logListView.Items; 
collection.CollectionChanged += collection_CollectionChanged; 
+0

我可以确认我有一个ListView。这对ListView有效。谢谢你的回答,这正是我所需要的。 – 2010-08-26 13:00:51