добавление значений enums в простое поле со списком

У меня есть очень простой вопрос, чтобы спросить о C # и WPF. Мой вопрос будет следовать после моей моей попытки:

private void Window_Loaded(object sender, RoutedEventArgs e) { foreach (var item in Races) { cbRace.Items.Add(item); } } } enum Races { Human=1, Dwarf, Elf, Orc, Goblin, Vampire, Centaur } 

Итак, мой вопрос в том, как добавить значения (например, человека, карлика, эльфа ….) в поле со списком: cbRace? жаль, что я новичок в C #, поэтому я бы рад оценить его, если кто-то может мне помочь :), спасибо заранее.

 private void Window_Loaded(object sender, RoutedEventArgs e) { foreach (var item in Enum.GetValues(typeof(Races))) { cbRace.Items.Add(item); } } enum Races { Human = 1, Dwarf, Elf, Orc, Goblin, Vampire, Centaur } 

Вы должны сделать что-то вроде этого:

 cbRace.DataSource = Enum.GetValues(typeof(Races)); 

Ознакомьтесь с этим ответом для получения дополнительной информации о настройке и извлечении значений enums.

Возможно, это самый простой способ установки элементов ComboBox:

 private void Window_Loaded(object sender, RoutedEventArgs e) { cbRace.ItemsSource = Enum.GetValues(typeof(Races)); cbRace.SelectedIndex = 0; } 

Нет необходимости перебирать значения enums, просто установите свойство ItemsSource .

Это не предпочтительное решение, которое Клеменс уже вам дал, но если вы хотите добавить в XAML напрямую, вы также можете сделать

  Human Dwarf Elf  

вы также можете внедрить IValueConverter, который при привязке к типу возвращает Enum.GetValues

Самый короткий способ добавить значения Enum для Combobox в C #

 class User{ public enum TYPE { EMPLOYEE, DOCTOR, ADMIN }; } 

// Добавьте этот class в событие загрузки формы Form Cunstructor

 cmbUserType.Items.AddRange(Enum.GetNames(typeof(User.TYPE))); 

использовать этот

 cbRace.Datasource = Enum.GetValues(typeof(Races)); 

для привязки вашего enums к combobox, а затем использовать selectedValue и selectedText свойства вашего combobox для восстановления имен и значений;

 cmbUserType.Items.AddRange(core.Global.ToObjectArray(Enum.GetValues(typeof(STATUS)))); public enum STATUS { INACTIVE, ACTIVE }