100以上の異なるフォントでサンプルテキストを表示するグリッドを含むWindows8XAMLページがあります。サンプルテキストは各グリッドビューアイテムで同じであり、ページ上部のテキストボックスを使用して変更できます。
文字を入力するたびに、すべてのグリッドビューアイテムが更新されます。問題は、これが著しく遅いことです。特にすばやく入力する場合。
何がそんなに遅くなっているのかわかりません。画面に表示されていないものも含め、すべてのグリッドビューアイテムを更新していますか?他の何かが問題を引き起こしていて、この特定のバインディングは単なる赤いニシンですか?
これが私のバインディングコードです(明確にするためにデータテンプレートからいくつかのxamlを削除しました):
<ScrollViewer>
<GridView x:Name="FontGridView" ItemsSource="{Binding Fonts}" SelectionMode="Multiple" Margin="116,0,40,46">
<GridView.ItemTemplate>
<DataTemplate>
<Grid Width="600" MinHeight="100" MaxHeight="120">
<TextBox Text="{Binding ElementName=pageRoot, Path=DataContext.SampleText, Mode=OneWay}"
FontFamily="{Binding FamilyName}" FontSize="32" Background="Transparent" />
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
</ScrollViewer>
これを行うためのより良い方法はありますか、または私がオンにできる他のパフォーマンス調整機能はありますか?
更新: Visual Studio 2012 RCがリリースされて以来、この間違いを犯す可能性は低くなっています。WinRTアプリのテンプレートは、この方法でScrollViewerを使用しなくなりました。Visual Studio 2011を使用して作成したアプリを移植した人のために、ここで質問を続けています。