【C#】在WPF的Datagrid中显示Enum类型的Description Attribute 信息

场景

wpf开发。在一些datagrid表中,需要显示enum类型信息。但是enum类型的枚举种类一般都用英文命名,直接显示在ui上可能有些用户不太能理解是什么意思。所以需要在ui上展示其实际中文含义。

解决方案

  1. 在enum的每个枚举项前增加[Description("xxxx")]这样的Attribute限定。
  2. 在代码中实现ValueConverter类。
public class EnumDescriptionConverter : IValueConverter
	{
		private string GetEnumDescription(Enum enumObj)
		{
			FieldInfo fieldInfo = enumObj.GetType().GetField(enumObj.ToString());
			var descriptionAttr = fieldInfo
				.GetCustomAttributes(false)
				.OfType<DescriptionAttribute>()
				.Cast<DescriptionAttribute>()
				.SingleOrDefault();
			if (descriptionAttr == null)
			{
				return enumObj.ToString();
			}
			else
			{
				return descriptionAttr.Description;
			}
		}

		object IValueConverter.Convert(object value, Type targetType, object parameter, CultureInfo culture)
		{
			Enum myEnum = (Enum)value;
			string description = GetEnumDescription(myEnum);
			return description;
		}

		object IValueConverter.ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
		{
			return string.Empty;
		}
	}
  1. 在xaml文件的 <Window.Resources>中先定义一个别名,如:
<converter:EnumDescriptionConverter x:Key="DescriptionConverter"/>
  1. 在需要操作的DataGridTextColumn列设定,如:
<DataGridTextColumn Header="列名" Binding="{Binding 变量名, Converter={StaticResource DescriptionConverter}}"/>

https://stackoverflow.com/questions/8207607/how-to-display-enum-type-in-datagridtextcolumn
https://www.cnblogs.com/smiler/p/3208375.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值