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

来源:互联网 发布:flash游戏源码 编辑:程序博客网 时间:2024/06/08 17:44

枚举类定义

        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已经描述了路径位置了











阅读全文
0 0