首页 > 编程语言 >【WPF】【C#】【代码记录】构造ComboBox下拉的数据源(字典类型)

【WPF】【C#】【代码记录】构造ComboBox下拉的数据源(字典类型)

时间:2024-10-18 14:13:30浏览次数:1  
标签:return Name ShapeType C# 数据源 public ComboBox type Display

#region 下拉
private Dictionary<string, T> getComboSource<T>(params T[] types) where T : Enum
{
    var enumValues = types.Length > 0 ? types : (T[])Enum.GetValues(typeof(T));
    return enumValues.ToDictionary(o => getTypeName(o), o => o);
}

private string getTypeName<T>(T type) where T : Enum
{
    var member = type.GetType().GetMember(type.ToString());
    if (member.Length > 0)
    {
        var attributes = member[0].GetCustomAttributes(typeof(DisplayAttribute), false);
        if (attributes.Length > 0)
        {
            return ((DisplayAttribute)attributes[0]).GetName();
        }
    }

    return type.ToString();
}
#endregion

调用的方式例如:

/// <summary>
/// 形状下拉
/// </summary>
public Dictionary<string, ShapeType> CalibrationShapeTypeComboSource
{
    get { return _calibrationShapeTypeComboSource; }
    set { SetProperty(ref _calibrationShapeTypeComboSource, value); }
}

/// <summary>
/// 有效、禁用区域下拉
/// </summary>
public Dictionary<string, AreaType> AreaTypeComboSource
{
    get { return _areaTypeComboSource; }
    set { SetProperty(ref _areaTypeComboSource, value); }
}


// 这样调用
CalibrationShapeTypeComboSource = getComboSource(ShapeType.Rectangle, ShapeType.Circle, ShapeType.RotatedRectangle, ShapeType.LineSegment);

AreaTypeComboSource = getComboSource<AreaType>();

 

结果:

 

 

枚举要声明Display

public enum ShapeType
{
    None,
    /// <summary>
    /// 线段
    /// </summary>
    [Display(Name = "线段")]
    LineSegment,

    /// <summary>
    /// 矩形
    /// </summary>
    [Display(Name = "矩形")]
    Rectangle,

    /// <summary>
    /// 旋转矩形
    /// </summary>
    [Display(Name = "旋转矩形")
    RotatedRectangle,

    /// <summary>
    /// 圆形
    /// </summary>
    [Display(Name = "圆形")]
    Circle,

    /// <summary>
    /// 多边形
    /// </summary>
    [Display(Name = "多边形")]
    Polygon
}
 public enum AreaType
 {
     /// <summary>
     /// 有效区
     /// </summary>
     [Display(Name = "有效区")]
     ValidArea,
     /// <summary>
     ///  屏蔽区
     /// </summary>
     [Display(Name = "屏蔽区")]
     MaskedArea,
     /// <summary>
     /// 禁用区
     /// </summary>
     [Display(Name = "禁用区")]
     DisabledArea
 }

 

标签:return,Name,ShapeType,C#,数据源,public,ComboBox,type,Display
From: https://www.cnblogs.com/moon-stars/p/18474158

相关文章

  • React中使用props
    目录1.模拟数据2.传递数据3.接收并使用数据3.结果展示实现根据数据渲染卡片(卡片数量根据数据动态、卡片框架样式相同,内容不同)1.模拟数据exportdefault[{id:1,title:"LifeLessonswithKatieZaferes",description:"Iwillsharewith......
  • Sql Server数据库监听 c#代码
    usingAnfiniL.SqlServerTools.Data;usingSqlServerTools;usingSqlServerTools.Data;usingSystem;usingSystem.Collections.Generic;usingSystem.Data;usingSystem.Linq;usingSystem.Net;usingSystem.Text;namespacewindowsApiAcitonSimulation.Help{publiccla......
  • Camera
    基础概念Unity场景在三维空间中表示游戏对象。由于观察者的屏幕是二维屏幕,Unity需要捕捉视图并将其“平面化”以进行显示。它使用摄像机来实现这一点。在Unity中,您可以通过将一个Camera组件添加到游戏对象来创建摄像机。常用属性CullingMask通过选择层来渲染指定层的......
  • Archi - 无单点原则 和 可水平扩展原则 的区别
    在系统设计中,无单点原则和可水平扩展原则是确保系统高可用性和灵活性的两个重要方面,它们之间存在明显的区别,具体如下:一、无单点原则定义:无单点原则是指在设计系统时,应避免存在单个点(组件、服务或设备)的故障导致整个系统不可用的情况。换句话说,系统应该具备冗余和容错能力,以确......
  • easyadmin NodeService
    EasyadminNodeService文件更新的commit由于作者更新了composer的加载方式,可能一些框架只更新composer没有更新controller文件的话,节点功能会出现bug错误。更新了节点文件的引用https://github.com/zhongshaofa/easyadmin/commit/424a0e6cbeb25afa03502641aaff92627c6......
  • 安乃达:用CRM构建从销售到管理到售后的全链路数字化运营平台
    安乃达驱动技术(上海)股份有限公司((简称:“安乃达”,股票代码为:“603350”))自2011年以来,公司通过多年的研发与积累现有直驱轮毂电机、减速轮毂电机和中置电机三大系列产品,并具备与电机相匹配的控制器、传感器、仪表等电驱动成套系统的配套供应能力。安乃达矢志不渝地致力于为您提......
  • chrony常用命令解析
    chronycsources-v该命令显示chronyd当前访问的时间源信息。可以指定可选参数-v,意为verbose。在这种情况下,会显示额外的标题行,以提醒各列的含义。M表示信号源的模式。^表示服务器,=表示对等机,#表示本地连接的参考时钟S*表示当前选择用于同步的最佳信号源。+表示选择......
  • modsecurity: 配置文件中的配置项之一
    一,是否启用防火墙SecRuleEngine是接受来自ModSecurity-CRS目录下的所有规则的安全规则引擎。因此,我们可以根据需求设置不同的规则。#SecRuleEngineOn:将在服务器上激活ModSecurity防火墙。它会检测并阻止该服务器上的任何恶意攻击。#SecRuleEngineDetectionOnly:如果这个规则......
  • STM32 ADC实例解析(1)-寄存器方式
    文章目录一、寄存器列表二、示例代码三、总结优点:缺点:在很长的一段时间里我在项目中都是使用寄存器方式一、寄存器列表__IOuint32_tSR;/!<ADC状态寄存器,地址偏移量:0x00/__IOuint32_tCR1;/!<ADC控制寄存器1,地址偏移量:0x04/__IOuint32_tCR2;/!<ADC控制寄存......
  • STM32 ADC实例解析(1)-HAL+DMA方式
    文章目录一、STM32ADC与DMA的结合使用初始化ADC:配置DMA:启动DMA传输:中断处理(可选):二、示例代码初始化GPIO设置中断设置三、应用优势高效性:减轻CPU负担:灵活性:易用性:随着开发项目的累计,将ADC与DMA结合使用,可以实现高效的数据采集和处理。一、STM32ADC与DMA的结合......