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 に答える