2014-01-27 4 views
0

Я заполняю ListBox цифрами Description значений Enum. Они отображаются в индексном порядке Enum, но я хочу, чтобы они отсортировались по описанию. Поэтому я добавил SortDescription в ListBox, но он не работает.Как сортировать связанную коллекцию ObjectDataProvider?

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 и сортировка этой коллекции также не помогают.

Есть ли решение для этого?

ответ

1

Какова цель ObjectDataProvider, если ваша привязка в коде?

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

Binding b = new Binding() { Source = sortedValues }; 
+0

Спасибо, все работает. Код был в XAML один раз и по какой-то причине был перемещен. Не могу вспомнить, почему. Последний 'ToArray()' не обязательно. – gumo

Смежные вопросы