добавление значений enum в простой combobox



У меня есть очень простой вопрос о 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#, поэтому я был бы очень признателен, если бы кто-то мог мне помочь :), заранее спасибо.
1151   7  

7 ответов:

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));

Checkout Этот ответ содержит дополнительную информацию о настройке и извлечении значений enum.

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

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

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

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

<ComboBox>
    <urCode:Races>Human</urCode:Races>
    <urCode:Races>Dwarf</urCode:Races>
    <urCode:Races>Elf</urCode:Races>
</ComboBox>

Можно также имплицировать IValueConverter, который при привязке к типу возвращает перечисление.GetValues

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

class User{

public enum TYPE { EMPLOYEE, DOCTOR, ADMIN };

}

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

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

Используйте это

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

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

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

Comments

    Ничего не найдено.