【问题标题】:Windows Phone. ObservableCollection as a source for ListView in Chat application视窗电话。 ObservableCollection 作为聊天应用程序中 ListView 的源
【发布时间】:2015-06-26 18:21:37
【问题描述】:

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

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

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

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

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

我做错了吗?

谢谢!

【问题讨论】:

  • 嗯,我需要粘贴什么代码?
  • 您调用 RemoveAt 的 xaml 和视图模型都会有所帮助。

标签: c# listview windows-runtime windows-phone observablecollection


【解决方案1】:

解决办法是:

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

【讨论】:

    猜你喜欢
    • 2011-05-04
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    • 2017-07-17
    • 2018-06-08
    • 2021-02-09
    • 2017-04-02
    • 1970-01-01
    相关资源
    最近更新 更多