私は次の簡略化されたクラスを持っています:
public class BaseContainer
{
public BaseContainer()
{
Children = new ObservableCollection<BaseContainer>();
}
public ObservableCollection<BaseContainer> Children { get; set; }
}
public class ItemA : BaseContainer
{
public ItemA()
{
base.Children.Add(new ItemB() { ItemBName = "bb" });
base.Children.Add(new ItemA() { ItemAName = "ab" });
base.Children.Add(new ItemB() { ItemBName = "ba" });
base.Children.Add(new ItemA() { ItemAName = "aa" });
}
public string ItemAName { get; set; }
}
public class ItemB : BaseContainer
{
public string ItemBName { get; set; }
}
ItemA.Childrenコレクションを2つの条件に基づいて並べ替えようとしています。
- すべてのアイテムAはコレクションの最初に来る必要があります
- アイテムAはItemANameでソートする必要があります
- アイテムBはItemBNameでソートする必要があります
したがって、並べ替えた後、私は次のようなものを期待します:
- ItemA-ItemAName = "aa"
- ItemA-ItemAName = "ab"
- ItemB-ItemBName = "ba"
- ItemB-ItemBName = "bb"
これを達成する方法について何かアイデアはありますか?
クラスタイプ名で並べ替えることができました:
List<BaseContainer> temp = base.Children.ToList();
temp.Sort((x, y) => string.Compare(x.GetType().Name, y.GetType().Name));
base.Children.Clear();
base.Children.AddRange(temp);
しかし、名前はソートされていません...
ありがとう!