我有一个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
包含的项目数量相当大时,当前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
几乎立即加载,即使有大量项目。但是显然我需要上面的其他控件,所以问题是我该怎么解决这个问题?(还有一个相关的问题:我担心
ScrollViewer
中的LongListSelector
可能会导致双重滚动或类似问题,但最终在这方面一切都很好。我不确定ojit_code是否以某种方式知道它是否在其他可滚动控件中,或者是否存在某些问题。发生其他我不知道的事情。一些解释为什么它运行良好,尽管速度很慢,但不胜感激。) 最佳答案
不要使用滚动查看器,因为它将使longlistselector认为它具有无限高的屏幕可用并渲染其所有项目。
相反,要解决用例,请使用“页眉”和“页脚”属性在列表项的上方或下方添加数据。
关于performance - 放在ScrollViewer中时,LongListSelector的性能非常差,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14408106/