私は、ピボット コントロールのパフォーマンスを改善する方法を見つけようとしています。このピボット コントロールには、C# でデータ バインドされたリスト ボックスがそれぞれ 4 つある PivotItems があります。BackgroundWorker を使用すると読み込み時間が短縮されますが、すべてのバックグラウンド タスクが実行されている場合でも、最初の 2 つのスワイプは常に遅延します。4 秒のラグは許容できません。次のようなリストボックス itemtemplate が原因である可能性があると思いました。
<DataTemplate x:Key="MetroList">
<Grid MinHeight="120">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="190"/>
<ColumnDefinition Width="32"/>
<ColumnDefinition Width="230"/>
</Grid.ColumnDefinitions>
<ListBox Width="190" ScrollViewer.VerticalScrollBarVisibility="Disabled" ItemsSource="{Binding connectingLines}" FlowDirection="RightToLeft" Margin="0,12" VerticalAlignment="Center">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Margin="6,0,0,6">
<Rectangle Fill="{Binding LineColor}" RadiusX="3" RadiusY="3"/>
<TextBlock Text="{Binding LineNumber}" FontWeight="Bold" Padding="8,0" FontSize="24" Margin="0,5,0,3" MinWidth="50" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center" TextAlignment="Center"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<toolkit:WrapPanel/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
<Ellipse Width="20"
Height="20"
Fill="White"
StrokeThickness="3"
Stroke="#FF222378"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Margin="6,0,0,0"
Grid.Column="1"/>
<Rectangle Fill="#FF222378"
Width="8"
Height="3"
Grid.Column="1"
HorizontalAlignment="Right"
VerticalAlignment="Center" Margin="-1,0,0,0" />
<TextBlock
TextWrapping="Wrap"
Text="{Binding stopName}"
FontFamily="Segoe WP Semibold"
FontWeight="Bold"
Foreground="#1E1B6E"
x:Name="StationName"
FontSize="32"
Width="200"
VerticalAlignment="Center"
Margin="12,6,0,10"
LineHeight="32"
Tag="{Binding stopId}"
Tap="StationName_Tap"
Grid.Column="2"
/>
</Grid>
</DataTemplate>
アプリにパフォーマンスの問題が発生する直前に最近追加された ListBox をキャンセルしようとしました。ただし、ラグ タイムは数ミリ秒しか短縮されません。また、念のため VirtualizingStackPanel.VirtualizationMode をリサイクルに設定しようとしましたが、何もしませんでした。ユーザーエクスペリエンスを向上させるためにできることはありますか? 必要に応じて PivotItem コンテンツを読み込むと聞いたことがありますが、ほとんどの記事は pivot.loadedpivotitem または pivotitem.loaded イベントを使用しており、どちらも遅延を解消するのに役立たなかったため、Google から役立つものを見つけることができませんでした。
編集: バックグラウンド スレッドが機能していても、何らかの形で ui スレッドが影響を受けていることに気付きました。ページは読み込まれますが、データ バインドが完了するまでスワイプなどの操作はできません。その後もジェスチャーは遅れています。