码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 示例:WPF中绑定枚举到ComboBox的方式


    一、目的:在开发过程中,经常会需要把枚举绑定到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个人主页-哔哩哔哩视频

  • 相关阅读:
    Less基础速学 —— 嵌套、变量、注释、&
    OpenHarmony3.0如何轻松连接华为云IoT设备接入平台?
    【电力系统】含电热联合系统的微电网运行优化附matlab代码和复现论文
    MySQL 常用函数 2022/09/06
    so-vits语音合成
    Spring5 框架 ---- 事务操作
    K线形态识别_跳空下跌三颗星
    项目管理-2023西电网课课后习题答案-第三章
    网络安全(黑客技术)—2024自学
    init进程 和 终端进程的关系
  • 原文地址:https://blog.csdn.net/u010975589/article/details/139756575
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号