当前位置:   article > 正文

示例:WPF中绑定枚举到ComboBox的方式_wpf combox 绑定枚举

wpf combox 绑定枚举

一、目的:在开发过程中,经常会需要把枚举绑定到ComboxBox下拉列表中,其实方法有很多,这里面通过MarkupExtension扩展GetEnumSourceExtension去绑定到列表


二、实现

定义GetEnumSourceExtension类

  1. public class GetEnumSourceExtension : System.Windows.Markup.MarkupExtension
  2. {
  3. private Type _enumType;
  4. public Type EnumType
  5. {
  6. get { return this._enumType; }
  7. set
  8. {
  9. if (value != this._enumType)
  10. {
  11. if (null != value)
  12. {
  13. Type enumType = Nullable.GetUnderlyingType(value) ?? value;
  14. if (!enumType.IsEnum)
  15. throw new ArgumentException("Type must be for an Enum.");
  16. }
  17. this._enumType = value;
  18. }
  19. }
  20. }
  21. public GetEnumSourceExtension()
  22. {
  23. }
  24. public GetEnumSourceExtension(Type enumType)
  25. {
  26. this.EnumType = enumType;
  27. }
  28. public override object ProvideValue(IServiceProvider serviceProvider)
  29. {
  30. if (null == this._enumType)
  31. throw new InvalidOperationException("This EnumType must be specified.");
  32. Type actualEnumType = Nullable.GetUnderlyingType(this._enumType) ?? this._enumType;
  33. Array enumVlues = Enum.GetValues(actualEnumType);
  34. if (actualEnumType == this._enumType)
  35. return enumVlues;
  36. Array tempArray = Array.CreateInstance(actualEnumType, enumVlues.Length + 1);
  37. enumVlues.CopyTo(tempArray, 1);
  38. return tempArray;
  39. }
  40. }

三、环境


VS2022

四、示例

应用GetEnumSourceExtension扩展绑定到ComboBox数据源

<ComboBox ItemsSource="{h:GetEnumSource EnumType={x:Type HorizontalAlignment}}"/>

 显示效果

五、需要了解的知识点

MarkupExtension 类 (System.Windows.Markup) | Microsoft Learn 

六、源码地址

GitHub - HeBianGu/WPF-ControlDemo: 示例

GitHub - HeBianGu/WPF-ControlBase: Wpf封装的自定义控件资源库

GitHub - HeBianGu/WPF-Control: WPF轻量控件和皮肤库

七、了解更多

System.Windows.Controls 命名空间 | Microsoft Learn

https://github.com/HeBianGu

HeBianGu的个人空间-HeBianGu个人主页-哔哩哔哩视频

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/928520
推荐阅读
  

闽ICP备14008679号