对复合集合进行排序

Chr*_*ott 7 .net c# data-binding collections wpf

因此,WPF不支持CompositeCollections视图的标准排序或过滤行为,因此解决此问题的最佳做法是什么.

有两个或更多不同类型的对象集合.您希望将它们组合成单个可排序和可过滤的集合(必须手动实现排序或过滤).

我考虑过的一种方法是创建一个只有少数核心属性的新对象集合,包括我希望对集合进行排序的属性,以及每种类型的对象实例.

class MyCompositeObject
{
    enum           ObjectType;
    DateTime       CreatedDate;
    string         SomeAttribute;
    myObjectType1  Obj1;
    myObjectType2  Obj2;
{
class MyCompositeObjects : List<MyCompositeObject> { }
Run Code Online (Sandbox Code Playgroud)

然后遍历我的两个对象集合来构建新的复合集合.显然这是一种蛮力方法,但它会起作用.我将获得新的复合对象集合上的所有默认视图排序和过滤行为,并且我可以在其上放置数据模板以根据实际存储在该复合项目中的类型来正确显示列表项目.

有什么建议以更优雅的方式做到这一点?

Chr*_*ott 1

更新:我找到了一个更优雅的解决方案:

class MyCompositeObject
{
    DateTime    CreatedDate;
    string      SomeAttribute;
    Object      Obj1;
{
class MyCompositeObjects : List<MyCompositeObject> { }
Run Code Online (Sandbox Code Playgroud)

我发现由于反射,存储在 Obj1 中的特定类型在运行时被解析,并且类型特定的 DataTemplate 按预期应用!