Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Use converter on bound items in combobox

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

like image 927
lebhero Avatar asked Feb 25 '12 22:02

lebhero


1 Answers

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.

like image 108
Martin Liversage Avatar answered Sep 22 '22 13:09

Martin Liversage