Question: I have the following (working) XAML for a ComboBox:

```
<ComboBox SelectedValue="{Binding SelectedItem}" ItemsSource="{Binding Items}">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Converter={StaticResource MyEnumToStringConverter}}"/>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

```

I don't like this code: In order to change how my enum is represented as a string, I also have to specify the look of the ComboBox ItemTemplate. What if I want to globally change the appearance of all my ComboBoxes?

Another solution is to specify the converter on the ItemSource binding:

```
<ComboBox
    SelectedValue="{Binding SelectedItem}"
    ItemsSource="{Binding Items, Converter={StaticResource MyEnumToStringConverter}}" />

```

I don't like this either since I want the ComboBox to store my real type, not the string representation of it.

What other alternatives do I have?

Answer: 
OP here. I reformulated the question [here](https://stackoverflow.com/questions/20635329/specify-converter-inside-datatemplate-in-usercontrol) and [got an answer](https://stackoverflow.com/questions/20635329/specify-converter-inside-datatemplate-in-usercontrol/#20638111) that applies also to this question.
You can create a new `MyEnumText` string based property that returns the `Description` attribute value of the enum value and bound your `TextBlock.Text` property to it as follows:

```
<ComboBox SelectedValue="{Binding SelectedItem}" ItemsSource="{Binding Items}">
<ComboBox.ItemTemplate>
    <DataTemplate>
        <TextBlock Text="{Binding MyEnumText}"/> <!--Bound to new Text property-->
    </DataTemplate>
</ComboBox.ItemTemplate>

```

**Add `DescriptionAtrribute` attribute** to your enum values:

```
public enum MyEnum
{
    [System.ComponentModel.Description("Value One")]
    MyValue1 = 1,

    [System.ComponentModel.Description("Value Two")]
    MyValue2 = 2,

    [System.ComponentModel.Description("Value Three")]
    MyValue3 = 3
}

```

**Create an Extension method** for `Enum` class:

```
public static class EnumHelper
{
    public static string GetDescription(this Enum value)
    {
        Type type = value.GetType();
        string name = Enum.GetName(type, value);
        if (name != null)
        {
            System.Reflection.FieldInfo field = type.GetField(name);
            if (field != null)
            {
                System.ComponentModel.DescriptionAttribute attr =
                       Attribute.GetCustomAttribute(field,
                         typeof(System.ComponentModel.DescriptionAttribute)) as System.ComponentModel.DescriptionAttribute;
                if (attr != null)
                {
                    return attr.Description;
                }
            }
        }
        return null;
    }
}

```

**Add the new property `MyEnumText`** which returns a string, to your ViewModel:

```
public MyEnum MyEnumProperty { get; set; }

public string MyEnumText    //New Property
{
    get
    {
        return MyEnumProperty.GetDescription();
    }
}

```