用于枚举的Combobox转换器

use*_*225 4 .net c# wpf enums ivalueconverter

我有一个具有类似值的枚举

HomeRun,StolenBase,FirstBase等

我想在组合框中显示这些值,在大写字母之前插入一个空格,因此它将显示为"Home Run","Stolen Base"等.

我已经有了可以为我做格式化的代码,并且我已将该代码添加到IValueConverter实现的'Convert'方法中.

我的问题是,我在哪里需要使用这个转换器(在xaml中),这样不仅下拉列表,而且显示的值,将具有这种格式?我是否还需要实现ConvertBack?

我很清楚为枚举设置'描述'并使用流行的EnumToDescriptionConverter,但我宁愿远离它.

wda*_*avo 7

我不确定是否有更好的方法,但你可以使用ItemTemplate实现你想要的

<ComboBox.ItemTemplate>
    <DataTemplate>
        <ContentPresenter
            Content="{Binding Converter={StaticResource baseballEnumConverter}}"/>
     </DataTemplate>
</ComboBox.ItemTemplate>
Run Code Online (Sandbox Code Playgroud)

这将在ComboBox中显示转换后的值.

ComboBox的SelectedValue仍然是Enum值.您不需要实现ConvertBack.