我有一个枚举说明转换器
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:com/renfe/cme/recursos/spring/applicationContext-*.xml</param-value>
<description>Spring files location</description>
</context-param>
我想将当前的组合框项目作为ConverterParameter传递给转换器
public class EnumDescriptionConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
//// parameter need current item, but null or "Value"
if (Enum.IsDefined(value.GetType(), value) == false)
return System.Windows.DependencyProperty.UnsetValue;
string parameterString = Enum.GetName(value.GetType(), value);
if (parameterString == null)
return System.Windows.DependencyProperty.UnsetValue;
var desc = (value.GetType().GetField(parameterString).GetCustomAttributes(typeof(DescriptionAttribute), false).FirstOrDefault() as DescriptionAttribute);
if (desc != null)
return desc.Description;
else
return parameter.ToString();
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
但是当我尝试绑定获取错误时,Value将作为字符串“Value”出现。有没有办法传递当前项目?
答案 0 :(得分:0)
您不需要转换器参数。只需更换:
value.GetType().GetField(parameterString)
带
value.GetType().GetField(value.ToString())
你可以完全摆脱parameterString
。单数枚举值的字符串表示形式始终与该值的字段名称匹配(或者,如果多个枚举元素具有相同的值,则它将匹配等效值的字段名称)。 / p>