wpf 枚举类型 combox
时间: 2023-06-23 15:49:52 浏览: 68
在WPF中,我们可以使用ComboBox控件来显示枚举类型的值。以下是实现方法:
1. 定义一个枚举类型。
```
public enum Gender
{
Male,
Female,
Unknown
}
```
2. 在XAML中定义ComboBox控件。
```
<ComboBox Name="cmbBox" ItemsSource="{Binding Source={x:Static local:MainWindow.GenderEnumValues}}" />
```
3. 在代码中,定义一个静态属性,用于获取枚举类型的值。
```
public static IEnumerable<Gender> GenderEnumValues
{
get { return Enum.GetValues(typeof(Gender)).Cast<Gender>(); }
}
```
4. 在代码中,将数据源绑定到ComboBox控件上。
```
cmbBox.DataContext = this;
```
通过以上步骤,就可以将ComboBox控件与枚举类型绑定,并以下拉列表的形式显示枚举类型的值了。如果需要在ComboBox中显示枚举类型的名称,可以在XAML中设置DisplayMemberPath属性:
```
<ComboBox Name="cmbBox" ItemsSource="{Binding Source={x:Static local:MainWindow.GenderEnumValues}}" DisplayMemberPath="Name" />
```
其中,Name是枚举类型的名称。需要在枚举类型中定义Name属性:
```
public enum Gender
{
[Description("男")]
Male,
[Description("女")]
Female,
[Description("未知")]
Unknown
}
public static string GetName(this Enum value)
{
var type = value.GetType();
var field = type.GetField(value.ToString());
var attr = field.GetCustomAttribute<DescriptionAttribute>();
return attr != null ? attr.Description : value.ToString();
}
public string Name
{
get { return this.GetName(); }
}
```
这样就可以在ComboBox中显示枚举类型的名称了。