Items
タイプのプロパティを持つ Ingredients クラスがありますList<Ingredient>
。
私のページの 1 つで、最初の文字でグループ化されたすべての成分を表示するために GridView を使用しています。
<Page.Resources>
<CollectionViewSource x:Name="IngredientsViewSource" IsSourceGrouped="True" ItemsPath="Items"/>
</Page.Resources>
ページが読み込まれると、CollectionViewSource の Source プロパティは次のように設定されます。
this.IngredientsViewSource.Source = CurrentData.Ingredients.GroupedItems;
GroupedItems
は Ingredients クラスのプロパティで、プロパティItems
と順序を取り、すぐに使用できるようにすべてをグループ化します。
public object GroupedItems
{
get
{
if (this.Items != null)
{
return from IngredientIteration in this.Items
//orderby IngredientIteration.Name ascending
group IngredientIteration
by IngredientIteration.FirstLetter
into IngredientGroup
//orderby IngredientGroup.Key ascending
select new {
FirstLetter = IngredientGroup.Key,
Items = IngredientGroup
};
}
else
{
return null;
}
}
private set { }
}
これは非常にうまく機能しています。最初の文字の順序がすべてめちゃくちゃになっているので、結果を並べ替えたいと思います。ただし、2 つの句の前にあるコメント マークを削除すると、orderby
まったくおかしくなります。現在のように orderby 句を残すと、グループは正しく順序付けられますが、グループごとの最初の項目のみが表示されます。
ただし、昇順を降順に変更すると、すべてが期待どおりに機能します。グループは降順で並べ替えられ、すべてのアイテムが表示され、各グループ内でアイテムが降順で並べ替えられます。
これは私には意味がありません。なぜ下降は機能するのに上昇は機能しないのですか? ここで何か不足していますか?