Изменить отображаемый текст WPF ComboBox, содержащий Enum?

Ситуация:

С# с WPF и .NET 4.5.

У меня есть Enum, определенный во внешней библиотеке. Допустим, он называется SomeEnum и содержит элементы SomeValue1, SomeValue2, SomeValue3 и многие другие.

У меня есть ComboBox, заполненный этими значениями, например:

comboBoxValues.ItemsSource = Enum.GetValues(typeof(SomeEnum));

ComboBox, как и ожидалось, показывает:

SomeValue1

SomeValue2

SomeValue3

...

Вопрос:

Могу ли я как-то изменить только отображаемые значения, чтобы часть Some отсутствовала. Так что ComboBox показывает только это:

Значение1

Значение2

Значение3

...

Но: SelectedValue для Value1 по-прежнему должно быть SomeValue1.


person asquared    schedule 10.04.2019    source источник


Ответы (1)


Вы можете использовать LINQ, чтобы просто обрезать строки:

comboBoxValues.ItemsSource = Enum.GetValues(typeof(SomeEnum)).Select(x => x.ToString().TrimStart("Value"));    

Но, честно говоря, я бы предложил сделать двухсторонний преобразователь, чтобы затем вы могли связать SelectedItem с SomeEnum SomeProperty {get;set;} или настроить словарь, например здесь

person Krzysztof Skowronek    schedule 10.04.2019