I have a numeric value that I wish to be converted to a more user-friendly string format when it’s displayed. I already have an IValueConverter called FlightLevelConverter that I’m using to do this for a normal TextBlock UI item where it works fine.
I now wish to apply the converter to a ComboBox of altitude choices, but I can’t get it to work.
This is the relevant part of the XAML I’m using for the ComboBox:
<UserControl.Resources>
<status:FlightLevelConverter x:Key="FlightLevelConverter"/>
</UserControl.Resources>
...
<ComboBox x:Name="AltitudeCombo" Grid.Row="0" Grid.Column="3" Width="100">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Converter={StaticResource FlightLevelConverter}}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
It displays the un-converted numeric values, not the nice string values. I get no errors and if I set a breakpoint in the converter it doesn’t get hit, showing that the converter is never called.
I’ve spent all morning trawling the Internet in general and StackOverflow in particular to try to discover what I’m doing wrong, but haven’t found out anything useful.
Why is my converter not being called? What am I doing wrong?
How do you add the items to the ComboBox?
You should set the ItemsSource property to a collection of numeric values, e.g.
If you add ComboBoxItems like this
the ItemTemplate and hence the binding with its converter won’t be applied.