C# 如何对绑定的ObjectDataProvider集合进行排序?

C# 如何对绑定的ObjectDataProvider集合进行排序?,c#,wpf,sorting,binding,enums,C#,Wpf,Sorting,Binding,Enums,我用枚举的描述值填充列表框。它们以枚举的索引顺序显示,但我希望它们按描述排序。因此,我在列表框中添加了一个SortDescription,但它不起作用 ObjectDataProvider odp = new ObjectDataProvider() { IsInitialLoadEnabled = false, MethodName = "GetValues", ObjectType = typeof(Enum), }; odp.MethodParameters.Add(this.

我用
枚举
描述
值填充
列表框
。它们以
枚举
的索引顺序显示,但我希望它们按描述排序。因此,我在
列表框中添加了一个
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
添加属性名,但我不知道是哪一个(我尝试了“Value”和“Description”)

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


有解决方案吗?

如果绑定是在代码中,那么
ObjectDataProvider
的目的是什么

var sortedValues = Enum.GetValues(typeof(MyEnum))
    .Cast<MyEnum>()
    .OrderBy(v => v.ToString())
    .ToArray();

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

谢谢,它很有效。该代码曾在XAML中出现过一次,但由于某种原因被移动了。不记得为什么了。最后一个
ToArray()
不是必需的。