Только первая буква от DataFormatString - PullRequest
0 голосов
/ 23 сентября 2011

У меня есть столбец, когда я связываю enum:

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

Как я могу отобразить только первую букву от DataFormatString?

Или, может быть, другое решение без DataFormatString?

1 Ответ

1 голос
/ 23 сентября 2011

В этом случае вы хотите реализовать 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;
}

где вы можете делать любые проверки объекта или получать другие свойства нужного вам объекта.

...