基本的にはDisplay属性と変わらないのでもろもろ省略する。
コンボボックスに表示するEnumをつくる
public enum DescriptionCountry { [Description("ニッポン")] Japane, [Description("アメリカ")] America, [Description("マレーシア")] Malaysia }
Description属性のプロパティを受け取るコンバーター
DescriptionAttributeにキャストして,Descriptionプロパティを返すコンバータです。
Description属性なのでDescriptionAttributeを使うところがDisplayと違う。
public class ComboBoxDescriptionConverter : IValueConverter { private string GetEnumDescription(Enum enumObject) { if (enumObject == null) return ""; FieldInfo fieldInfo = enumObject.GetType().GetField(enumObject.ToString()); object[] attributeArray = fieldInfo.GetCustomAttributes(false); if (attributeArray.Length == 0) { return enumObject.ToString(); } else { DescriptionAttribute attribute = attributeArray[0] as DescriptionAttribute; if (attribute == null) return string.Empty; return attribute.Description; } } public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { Enum myEnum = (Enum)value; string description = GetEnumDescription(myEnum); return description; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { return string.Empty; } }
完成
こんな感じになる