ただし、 Load() は何も作成しません。一連のアイテムを取得して、基礎となるソースからコンテキストにロードするだけです。mytable は実際のデータを保持していないため、context.mytable に順序付けを課すことはできません。実際のデータを取得するために使用するクエリの一部を保持しています。
UI に順序付けを行うには、バインド先のリストを順序付けするか、順序付けされていないリストを使用して、順序付けを適用するジョブを持つオブジェクトにラップする必要があります。Local を使用しているので、後者を使用してCollectionViewSourceを使用します。
WPF の CollectionViewSource の例を次に示します。順番に表示したい順序付けられていないリストである DataContext のプロパティ StateOrProvinces にバインドされています。
<UserControl.Resources>
<CollectionViewSource x:Key="stateOrProvinceViewSource" Source="{Binding Path=StateOrProvinces}" >
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="Name" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
</UserControl.Resources>
scm は次のとおりです。
xmlns:scm="clr-namespace:System.ComponentModel;assembly=WindowsBase"
コードで同じこと:
CollectionViewSource orderedView = new CollectionViewSource()
{
Source = StateOrProvinces,
};
orderedView.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending));
追加のレイヤーを使用して順序付けを適用すると、いくつかの利点があります。異なる場所で異なる順序で同じリストを表示し、毎回手動で順序を適用することなく、基になるリストからアイテムを追加/削除できます。
また、追加のベルとホイッスルを持つCollectionViewクラスも確認する必要がありますが、情報の過負荷を削減するために、ここでは説明しません。