Use converter on bound items in combobox
30,116
You can modify the ItemTemplate
of the ComboBox
and use your converter:
<ComboBox ItemsSource="{Binding}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Converter={StaticResource IDPrefixValueConverter}}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
Each item is bound to the items in the ItemsSource
. By using the converter in the binding you are able to perform the conversion you want.
Author by
lebhero
Updated on August 07, 2020Comments
-
lebhero almost 4 years
i have a combobox which is bound to a datatable column like this:
ComboBox.DataContext = DataDataTable; ComboBox.DisplayMemberPath = DataDataTable.Columns["IDNr"].ToString();
The IDNr in the Column always starts with 4 letters followed with the ID Number (ex. BLXF1234) . I need to display the items in Combobox without the Letters (i need 1234 to be displayed in the combobox).
So i wrote a converter :
class IDPrefixValueConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (value != null) { string s = value.ToString(); if (s.Contains("BL")) { return s.Substring(4); } else { return s; } } return ""; } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { throw new NotSupportedException(); }
No, how can i tell the combobox to use the converter to display the items ? i tried this in the Xaml:
ItemsSource="{Binding}" DisplayMemberPath="{Binding Converter={StaticResource IDPrefixValueConverter}}"
But still not working ...any ideas ? Thanks
-
lebhero about 12 yearsThank you, problem was binding the combobox in the code behind ...but this solved my problem..
-
tabina over 10 yearsDoes this really apply the converter to any of the items in the list? I tried the code but it seems as if the converter is only used for the selected item.
-
Martin Liversage over 10 years@tabina: It works with a simple
ComboBox
like the one in my sample. Perhaps you have a more complexComboBox
? Here is answer to a question that seems to be the opposite of your problem: stackoverflow.com/a/8247049/98607