在Windows Phone 8中,如何绑定enum和listpicker

时间:2013-06-29 17:49:15

标签: binding enums windows-phone-8 listpicker

有人可以举个例子,告诉我如何在Windows Phone 8上将枚举绑定到listpicker吗?

在互联网上找不到任何内容......而且缺乏有关此工具包的文档也无济于事。

由于

1 个答案:

答案 0 :(得分:3)

绑定很容易。唯一的问题是在Windows手机中无法使用扩展方法GetNames()。但是,你可以写一个。

public static class EnumExtensions {
  public static IEnumerable<string> GetNames<TEnum>() where TEnum : struct {
    var type = typeof(TEnum);
    if (!type.IsEnum)
      throw new ArgumentException(String.Format("Type '{0}' is not an enum", type.Name));

    return (
      from field in type.GetFields(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static)
      where field.IsLiteral
      select field.Name)
    .ToList<string>();
  }
}

一旦你拥有它,很容易将它绑定到任何列表。

public enum MyEnum { 
  v1, v2, v3
}

// Binding
myListPicker.ItemsSource = EnumExtensions.GetNames<MyEnum>();

// Getting selected value
var myEnum = (MyEnum)Enum.Parse(typeof(MyEnum), myListPicker.SelectedItem.ToString());