gpt4 book ai didi

performance - 包含在 ScrollViewer 中的 LongListSelector 性能非常差

转载 作者:行者123 更新时间:2023-12-04 16:47:35 25 4
gpt4 key购买 nike

我有一个 UserControl需要在顶部包含一堆控件和一个 LongListSelector在他们下面。整体总高度UserControl可能(并且几乎总是会)超过屏幕高度,在这种情况下整个 UserControl必须是可滚动的。

我目前的设置如下:

<staff:UserContentControl 
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-namespace:MyApp.Controls"
xmlns:staff="clr-namespace:MyApp.Helpers"
x:Class="MyApp.Controls.RemoteHomePage"

DataContext="{Binding RelativeSource={RelativeSource Self}}"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}">

<ScrollViewer>
<ScrollViewer.Content>
<StackPanel>
<TextBlock Txt="Text1" Sign="@" />
<TextBlock Txt="Text2" Sign="#" />
<controls:Divider />

<TextBlock Txt="Text3" Sign="~" />
<TextBlock Txt="Text4" Sign="~" />
<controls:TextDivider Text="Divider text" />

<phone:LongListSelector ItemsSource="{Binding Items}">
<phone:LongListSelector.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Title}" />
</DataTemplate>
</phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>
</StackPanel>
</ScrollViewer.Content>
</ScrollViewer>
</staff:UserContentControl>

这个解决方案满足了我的需求,但也有一个大问题:目前 LongListSelector当它包含的项目数量相当大时,加载确实需要很多时间。处理 300 个项目需要 8 秒,在此期间整个 UI 被阻塞。如果我删除除 LongListSelector 之外的所有内容,像这样:
<staff:UserContentControl 
...>

<phone:LongListSelector ItemsSource="{Binding Items}">
<phone:LongListSelector.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Title}" />
</DataTemplate>
</phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>
</staff:UserContentControl>

然后 LongListSelector即使项目数量显着增加,也几乎立即加载。但显然我需要它上面的其他控件,所以问题是我能做些什么来解决这个问题?

(还有相关的问题:我担心 LongListSelector 里面的 ScrollViewer 可能会导致双重滚动或类似的事情,但最终在这方面一切都很好。我不确定 LongListSelector 是否知道它在里面其他可滚动控件,或者如果发生其他我不知道的事情。一些解释为什么它可以正常工作,虽然很慢,但将不胜感激。)

最佳答案

不要使用滚动查看器,因为它会使 longlistselector 认为它有一个无限高的屏幕可用并呈现其所有项目。
相反,要解决您的用例,请使用 Header 和 Footer 属性在列表项的上方或下方添加数据。

关于performance - 包含在 ScrollViewer 中的 LongListSelector 性能非常差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14408106/

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