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
それが他のスクロール可能なコントロールの内部にあることを何らかの形で知っているのか、それとも他の何かが起こっているのかはわかりません。私は気づいていません.非常に遅いですが、うまく動作する理由を説明していただければ幸いです.)