0

我绑定枚举时有一列:

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

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

或者也许是没有 DataFormatString 的另一种解决方案?

4

1 回答 1

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

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

于 2011-09-23T12:31:19.253 回答