将枚举值添加到简单的组合框中

时间:2013-02-23 13:08:12

标签: c# wpf combobox 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
    }

好的,我的问题是如何将值(例如Human,dwarf,elf ....)添加到组合框中:cbRace?抱歉,我是C#的新手,所以如果有人可以帮助我,我会集会赞赏:),提前谢谢。

7 个答案:

答案 0 :(得分:18)

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
    }

答案 1 :(得分:16)

你应该可以这样做:

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

结帐this答案,了解有关设置和检索枚举值的更多信息。

答案 2 :(得分:5)

这可能是设置ComboBox项目的最简单方法:

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

没有必要循环枚举值,只需设置ItemsSource属性。

答案 3 :(得分:2)

这不是一个首选的解决方案,因为Clemens已经给你了,但如果你想直接添加XAML,你也可以这样做

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

你还可以实现一个IValueConverter,当绑定到Type时,返回Enum.GetValues

答案 4 :(得分:1)

在C#中将枚举值添加到Combobox的最短路径

class User{

public enum TYPE { EMPLOYEE, DOCTOR, ADMIN };

}

//将此类添加到Form Cunstructor的表单加载事件

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

答案 5 :(得分:0)

使用此

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

将枚举数据绑定到组合框,然后使用组合框的selectedValue和selectedText属性来检索名称和值;

答案 6 :(得分:0)

SELECT MAX(id)