WPF 将Enum 绑定到 集合控件

通过绑定转换器

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()
  }
}
<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);
    }
}
<ComboBox ItemsSource="{local:EnumValues local:EmployeeType}"/>


知识共享许可协议
《WPF 将Enum 绑定到 集合控件》常伟华 创作。
采用 知识共享 署名-相同方式共享 3.0 中国大陆 许可协议进行许可。
  • 多说评论
  • 签名
  • 新浪微博
  • 默认评论
  • Tab Header 5

0 条评论 / 点击此处发表评论

Tab Content 5

开发技术


开发平台和工具

sitemap     154.95ms