8

我有一个关于 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# 的新手,所以如果有人可以帮助我,我将不胜感激:),在此先感谢。

4

7 回答 7

23
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
    }
于 2013-02-23T13:14:49.087 回答
18

你应该能够做这样的事情:

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

查看答案以获取有关设置和检索枚举值的更多信息。

于 2013-02-23T13:17:09.803 回答
5

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

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

不必遍历枚举值,只需设置ItemsSource属性即可。

于 2013-02-23T14:26:35.753 回答
2

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

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

您还可以实现一个 IValueConverter,它在绑定到类型时返回 Enum.GetValues

于 2014-02-20T11:07:40.247 回答
2

在 C# 中将枚举值添加到组合框的最短方法

class User{

public enum TYPE { EMPLOYEE, DOCTOR, ADMIN };

}

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

cmbUserType.Items.AddRange(Enum.GetNames(typeof(User.TYPE)));
于 2016-12-31T04:12:42.770 回答
0

用这个

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

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

于 2013-02-23T13:20:57.510 回答
0
cmbUserType.Items.AddRange(core.Global.ToObjectArray(Enum.GetValues(typeof(STATUS))));
public enum STATUS { INACTIVE, ACTIVE }
于 2016-12-31T04:00:03.923 回答