使用枚举值填充组合框

Populating a combo box with values from an enum

我有这样的 enum

enum Beep {A, B, C }

现在,我希望用这些值填充我的组合框,如下所示(我的想法是遵循 other's example)。

<ComboBox x:Name="comboBox1" 
          ...
          ItemsSource="Binding Source={StaticResource Beep}" />

但是,绑定变得有点太静态了,并且从字面上给了我输入的确切字符串。我做错了什么以及如何解决它?

我也尝试按照提示添加类似这样的内容。不过没用。

public List<Beep> Beepies
{
  get
  {
    return new List<Beep>{ Beep.A }
  }
}

我们还能做些什么?如果我在下面的代码中绑定,我可以将值放入框中。但这不是重点 - 我希望对方法进行 XAMLize。

comboBox1.ItemsSource = Enum.GetValues(typeof(Beep));

您必须使用集合进行绑定。尝试创建一个 List<Beep>.

创建一个转换器,枚举 enum:

public class EnumConverter : IValueConverter
{
  public object Convert(object value, ...)
  {
    return Enum.GetValues(value.GetType());
  }
}

然后您可以在绑定中使用此转换器以 XAMLise 方法:

<!-- Put this in resources somewhere -->
<Converters:EnumConverter x:Key="MyEnumConverter"/>

<!-- Change your binding to include the new converter -->
<ComboBox x:Name="comboBox1" 
          ...
          ItemsSource="Binding Source={StaticResource Beep}, 
                       Converter={StaticResource MyEnumConverter}" />