gpt4 book ai didi

c# - Windows Store App ListView 闪烁/内容消失

转载 作者:太空宇宙 更新时间:2023-11-03 10:31:48 25 4
gpt4 key购买 nike

我在使用 ListView 时遇到了一些问题ItemsSource在哪里可能非常重要(超过 5,000 项)。

我的应用程序是由两个 ListView 组成的聊天应用程序。

  1. 左边一个,线程ListView显示事件线程列表(对话)
  2. 右边一个,对话 ListView 显示所有已交换的消息。

我正在使用 DataTemplate模式,以便我的对话 ListView 的每个项目都自定义如下:使用 Coding4Fun 的聊天气泡包裹:http://www.geekchamp.com/articles/getting-started-with-the-coding4fun-toolkit-windows-phone-chatbubble-control

每个聊天气泡都有两个 TextBlock (一个用于消息内容,另一个用于时间戳)。

稍后,我打算在此消息中添加图片。

当用户单击左侧面板 ListView 中的对话时,主对话 ListView 会加载相应的对话(可观察)集合。如果该集合特别大(在一种情况下,我有超过 10'000 条消息), session ListView 会显示内容,但是一旦切换到另一个线程并返回到前一个,内容就不再显示,虽然它在这里,但它已加载。开始滚动,使 ListView 闪烁,因此内容可见但严重闪烁。如果我停止滚动,则不会显示任何内容,显示一个空列表。

进一步的测试表明,这个问题只发生在使用 ScrollIntoView() 的大集合中。方法:事实上,我希望每次用户单击一个线程时显示我的对话 ListView 的底部,以便他可以阅读最后一条消息而不是旧消息,因此节省了他必须一直滚动到底部,每个时间。

我通过注释掉让 ListView 滚动到底部的行来确认这个问题。闪烁问题消失了。

最后,当我写下我的问题时,我发现了一个似乎是我的情况的 stackoverflow 问题:Windows Store universal app - ListView oddity

不幸的是,解决方案不是很清楚。我该如何解决我的问题?我应该如何使用 VirtualizingStackPanel/>在已经使用 <ListView.ItemContainerStyle> 的 ListView 中, ListView.ItemTemplate><DataTemplate>

最佳答案

我的闪烁问题的解决方案以及如何实现 UI 虚拟化(通常在 Windows 8.1 中引入),如此处所述 https://www.microsoftpressstore.com/articles/article.aspx?p=2216995&seqNum=4如下:

<ListView.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</ListView.ItemsPanel>

放置在 ListView 范围内!

Orientation 必须定义(Vertical | Horizo​​ntal)否则会发生Critial Failure!

UI 虚拟化增强了大型 GridView 和 ListView,因此可以有效地加载大量数据,而不会减慢 UI 的速度,也不会阻塞它太久。

关于c# - Windows Store App ListView 闪烁/内容消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29845771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com