第一种,通过绑定转换器:

public sealed class EnumToNamesConverter : IValueConverter  {    object IValueConverter.Convert(object value, Type targetType, object parameter, CultureInfo culture)    {      return Enum.GetNames(value.GetType());    }      object IValueConverter.ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)    {      throw New NotSupportedException()    }  } 

 

XAML

<local:EnumToNamesConverter x:Key="EnumToNamesConverter" />

 

<ComboBox ItemsSource="{Binding                          Source={x:Type local:CompassHeading},                          Converter={StaticResource EnumToNamesConverter}}" /> 

第二种,经典呀!通过继承MarkupExtension

 

[MarkupExtensionReturnType(typeof(object[]))]  public class EnumValuesExtension : MarkupExtension  {      public EnumValuesExtension()      {      }        public EnumValuesExtension(Type enumType)      {          this.EnumType = enumType;      }        [ConstructorArgument("enumType")]      public Type EnumType { get; set; }        public override object ProvideValue(IServiceProvider serviceProvider)      {          if (this.EnumType == null)              throw new ArgumentException("The enum type is not set");          return Enum.GetValues(this.EnumType);      }  } 

XAML

<ComboBox ItemsSource="{local:EnumValues local:EmployeeType}"/> 

posted on 2014-01-02 16:45  樂兒  阅读(645)  评论(0编辑  收藏  举报