我有一个关于 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
}
这可能是设置组合框项目的最简单方法:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
cbRace.ItemsSource = Enum.GetValues(typeof(Races));
cbRace.SelectedIndex = 0;
}
ItemsSource
属性即可。
这不是首选解决方案,因为 Clemens 已经为您提供了该解决方案,但如果您想直接添加到 XAML 中,您也可以这样做
<ComboBox>
<urCode:Races>Human</urCode:Races>
<urCode:Races>Dwarf</urCode:Races>
<urCode:Races>Elf</urCode:Races>
</ComboBox>
您还可以实现一个 IValueConverter,当绑定到 Type 时,返回 Enum.GetValues
在 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));
将枚举数据绑定到组合框,然后使用组合框的 selectedValue 和 selectedText 属性来检索名称和值;
cmbUserType.Items.AddRange(core.Global.ToObjectArray(Enum.GetValues(typeof(STATUS))));
public enum STATUS { INACTIVE, ACTIVE }
给定类似的东西
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.Parse(enumValue.ToString()), Enum.GetName(typeof(TEnum), enumValue));
}
}