ComboBox绑定枚举和自定义类时指定列表中显示的类属性内容

博客内容介绍了如何在ComboBox中绑定枚举和自定义类,并详细说明了如何设置显示的内容,特别是如何通过枚举的Description属性来显示具体内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

枚举类定义

        public class EnumItem
        {
            public string Text { get; set; }

            public int Value { get; set; }

            public string Description { get; set; }

            public EnumItem(string text, int value, string description)
            {
                Text = text;
                Value = value;
                Description = description;
            }

        }
获取枚举文本,值和描述的方法

        public static List<EnumItem> GetEnumItems(Type enumType)
        {
            var list = new List<EnumItem>();
            if (enumType.IsEnum != true)
            {
                throw new InvalidOperationException();
            }
            var typeDescription = typeof(DescriptionAttribute);
            var fields = enumType.GetFields();
            foreach (var field in fields)
            {
                if (field.FieldType.IsEnum == false)
                    continue;
                var value = (int)enumType.InvokeMember(field.Name, BindingFlags.GetField, null, null, null);
                var description = string.Empty;
                var arr = field.GetCustomAttributes(typeDescription, true);
                if (arr.Length > 0)
                {
                    var aa = (DescriptionAttribute)arr[0];
                    description = aa.Description;
                }
                else
                {
                    description = field.Name;
                }
                var text = field.Name;
                if (description != "NotBind")
                    list.Add(new EnumItem(text, value, description));
            }
            return list;
        }

页面上下文中绑定的获取枚举的参数

        public ObservableCollection<EnumItem> Sex => new ObservableCollection<EnumItem>(EnumHelper.GetEnumItems(typeof(Sex)));
页面端代码

            <ComboBox Grid.Row="2" Grid.Column="1" 
                      VerticalAlignment="Center"  Margin="0,12,0,2" Grid.ColumnSpan="2"
                      ItemsSource="{Binding DataContent.Sex}" 
                      DisplayMemberPath="Description" 
                      SelectedValuePath="Text"  />

其中DisplayMemberPath="Description"意为将显示成员的路径指定为itemsSource所指定的Sex的成员Description

简单点说就是,显示的具体内容为Sex的Description项

其他的Path以此类推,只需填写成员的名称即可,无需再绑定和指定具体的路径,因为ItemsSource已经描述了路径位置了











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值