大規模なデータセットでは、並べ替えに費用がかかる場合があります。画面のスペースが問題になる場合は、1つのタイプのアイテムを含む1つのデータグリッドを作成し、アイテムテンプレートを切り替えて両方のビューを切り替えることができます。このようにして、画面の資産が保持され、並べ替えが2回行われることはなく、両方のビュー間の並べ替えを同期しておくための非常に信頼性の高い方法があります。
効果を達成する方法はたくさんありますが、最善のアプローチは特定の状況によって異なります。
1つのアプローチは、2つ<GridView>
の異なるをリソースとして設定し、どちらをコードで使用するか、カスタムコンバーターとのバインドを介して使用するかを選択することです。
<Grid>
<Grid.Resources>
<GridView x:Key="DefaultView">
<GridViewColumn Width="120"....etc/>
</GridView>
<GridView x:Key="AlternativeView">
<GridViewColumn Width="50"....etc/>
</GridView>
</Grid.Resources>
<ListView x:Name="MyListView" ItemsSource="{Binding DisplayValues}" View="{StaticResource DefaultView}"/>
</Grid>
背後のコードでは、次のようにビューを切り替えることができます。
MyListView.View = isDefault ? MyListView.TryFindResource("DefaultView") : MyListView.TryFindResource("AlternativeView")
Bindingを使用して、コードビハインドをスキップすることもできます。
別のアプローチは、ユーザーコントロールが2つの代替状態でデータを表示できる列アイテムの1つに対してユーザーコントロールを作成することです。
さらに別の可能性は、 ItemTemplateSelectorを使用することです