Windows Phone.ObservableCollection 作为聊天应用程序中列表视图的来源



我已经将一个IRC库移植到WinRT(它支持很多RFC 1459和少量2812),现在我尝试使用它。

作为IRC消息的视图,我选择了ListView(不知道这是否是一个好主意)和RichTextBlock作为项目。

我正在使用可观察集合来存储传入的消息(一个类)。它绑定得很好,甚至在新消息到达时滚动到底部(感谢 Marco Minerva 的行为!

我还确定我需要将集合保持在某个限制(例如 100 条消息)。因此,如果达到计数器,我在集合中使用 RemoveAt(0)。

问题是,当 RemoveAt 通知列表视图时,它会跳到消息列表的中心(而不是底部)。

我做错了什么吗?

谢谢!

解决方案是:

collection.CollectionChanged += (s, args) =>
            {
                var scrollViewer = behavior.AssociatedObject.GetFirstDescendantOfType<ScrollViewer>();
                scrollViewer.UpdateLayout();
                scrollViewer.Measure(scrollViewer.RenderSize);
                scrollViewer.ChangeView(0, scrollViewer.ScrollableHeight, scrollViewer.ZoomFactor, false);
            };

相关内容

  • 没有找到相关文章

最新更新