只有DataFormatString的第一个字母

时间:2011-09-23 12:24:11

标签: silverlight-4.0 telerik-grid dataformat

绑定枚举时我有一个列:

<telerik:GridViewComboBoxColumn Header="N/U" DataMemberBinding="{Binding VehicleCondition}" ItemsSourceBinding="{Binding Source={StaticResource Locator}, Path=CarSalon.VehicleConditions}" IsGroupable="False" DataFormatString="" />

如何只显示DataFormatString的第一个字母?

或者没有DataFormatString的其他解决方案?

1 个答案:

答案 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;
}

您可以对对象进行任何检查或获取所需对象的其他属性。