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

zpjtge22  于 2023-10-22  发布在  其他
关注(0)|答案(8)|浏览(103)

我有一个关于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#的新手,所以如果有人能帮助我,我会非常感激:),提前感谢。

yxyvkwin

yxyvkwin1#

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

class User{

public enum TYPE { EMPLOYEE, DOCTOR, ADMIN };

}

//将该类添加到Form构造函数的Form load事件中

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

weylhg0b2#

使用此

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

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

i34xakig

i34xakig3#

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

w8rqjzmb4#

如果有类似

public class ComboBoxItem
{
    public ComboBoxItem(int id, string text)
    {
      Id = id;
      Text = text;
    }
    
    public int Id { get; set; }
    public string Text { get; set; }
    
    public override string ToString() => Text;
}

你可以用

public static IEnumerable<ComboBoxItem> GetAsComboBoxItems<TEnum>()
{
  foreach (var enumValue in Enum.GetValues(typeof(TEnum)))
  {
    yield return new ComboBoxItem((int)enumValue, enumValue.ToString());
  }
}

然后

cbRace.DataSource = GetAsComboBoxItems<Races>().ToList();
xdnvmnnf

xdnvmnnf5#

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
    }
bhmjp9jg

bhmjp9jg6#

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

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

查看this answer以了解有关设置和检索枚举值的更多信息。

yduiuuwa

yduiuuwa7#

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

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

不需要循环遍历枚举值,只需设置ItemsSource属性。

gojuced7

gojuced78#

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

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

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

相关问题