我在WP应用程序中使用了这样的枚举:
公共枚举性别 { 男人= 0, 女人, 其他 }
我如何编写Listpicker项目是性别枚举项目的代码。要说清楚,我希望用户从Listpicker中选择性别。请帮忙。
答案 0 :(得分:0)
我假设您想要绑定到枚举类型的属性,就像这样?
public enum EnumType { Item1, Item2 }
public EnumType Property { get; set; }
我就这样做了:
(在构造函数中)
theListPicker.ItemsSource = Enum.GetValues(typeof(EnumType));
(XAML)
<phone:PhoneApplicationPage
...
x:Name="_this"/>
...
<phone:PhoneApplicationPage.Resources>
<local:EnumIntConverter x:Name="enumIntConverter"/>
</phone:PhoneApplicationPage.Resources>
....
<toolkit:ListPicker ...
SelectedIndex="{Binding ElementName=_this, Path=Property, Converter={StaticResource enumIntConverter}, Mode=TwoWay}
(名称空间中的某个地方)
public class EnumIntConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return (int)(EnumType)value;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return Enum.GetValues(typeof(EnumType)).GetValue((int)value);
}
}
在我的情况下,我也想使用枚举的描述而不是他们的名字,所以我使用这个代码而不是上面的“在构造函数中”:
Array rawValues = Enum.GetValues(typeof(EnumType));
List<string> values = new List<string>();
foreach (EnumType e in rawValues)
values.Add((typeof(EnumType).GetMember(e.ToString())[0].GetCustomAttributes(typeof(DescriptionAttribute), false)[0] as DescriptionAttribute).Description);
theListPicker.ItemsSource = values;