【问题标题】:How to sort a bound ObjectDataProvider Collection?如何对绑定的 ObjectDataProvider 集合进行排序?
【发布时间】:2014-01-27 09:56:49
【问题描述】:

我用EnumDescription 值填充ListBox。它们以Enum 的索引顺序显示,但我希望它们按描述排序。于是我在ListBox上加了一个SortDescription,但是还是不行。

ObjectDataProvider odp = new ObjectDataProvider()
{
  IsInitialLoadEnabled = false,
  MethodName = "GetValues",
  ObjectType = typeof(Enum),
};
odp.MethodParameters.Add(this.EnumType);
odp.Refresh();
Binding b = new Binding() { Source = odp };
listBox.SetBinding(ListBox.ItemsSourceProperty, b);
listBox.Items.SortDescriptions.Add(new SortDescription());

我也尝试将属性名称添加到SortDescription,但我不知道是哪个(我尝试了“值”和“描述”)。

ObjectDataProvider 包装在CollectionViewSource 中并对该集合进行排序也无济于事。

有解决办法吗?

【问题讨论】:

    标签: c# wpf sorting binding enums


    【解决方案1】:

    如果您的绑定是在代码中,ObjectDataProvider 的用途是什么?

    var sortedValues = Enum.GetValues(typeof(MyEnum))
        .Cast<MyEnum>()
        .OrderBy(v => v.ToString())
        .ToArray();
    
    Binding b = new Binding() { Source = sortedValues };
    

    【讨论】:

    • 谢谢,它有效。该代码曾经在 XAML 中,但由于某种原因被移动。不记得为什么了。最后一个ToArray() 不是必需的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 2019-02-28
    • 1970-01-01
    • 2018-02-17
    相关资源
    最近更新 更多