绑定枚举时我有一个列:
<telerik:GridViewComboBoxColumn Header="N/U" DataMemberBinding="{Binding VehicleCondition}" ItemsSourceBinding="{Binding Source={StaticResource Locator}, Path=CarSalon.VehicleConditions}" IsGroupable="False" DataFormatString="" />
如何只显示DataFormatString的第一个字母?
或者没有DataFormatString的其他解决方案?
答案 0 :(得分:1)
在这种情况下,您希望实现ValueConverter
,它看起来像这样(使用LINQ字符串扩展):
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return ((string)value).First().ToString();
}
显然,如果您的输入值(VehicleCondition
)不是字符串,则需要执行更复杂的操作。
你的XAML会变成这样:
<telerik:GridViewComboBoxColumn Header="N/U" DataMemberBinding="{Binding VehicleCondition, Converter={StaticResource initialLetterConverter}}" ...
如果您需要访问有关该项目的其他信息而不仅仅是VehicleCondition
,那么您可以将绑定更改为:
<telerik:GridViewComboBoxColumn Header="N/U" DataMemberBinding="{Binding, Converter={StaticResource initialLetterConverter}}" ...
将绑定到该对象。你的转换器就变成了:
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var carSalon = (CarSalon)value;
string result = string.Empty;
if (carSalon != null && <whatever else you need to test>)
{
result = temp.VehicleCondition.First().ToString();
}
return result;
}
您可以对对象进行任何检查或获取所需对象的其他属性。