使用枚举值填充组合框
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}" />
我有这样的 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}" />