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
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With