c# wpf xaml converter

c# - converters wpf



Usar convertidor en artículos encuadernados en combobox (1)

Puede modificar el ItemTemplate de ComboBox y usar su convertidor:

<ComboBox ItemsSource="{Binding}"> <ComboBox.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding Converter={StaticResource IDPrefixValueConverter}}"/> </DataTemplate> </ComboBox.ItemTemplate> </ComboBox>

Cada artículo está vinculado a los artículos en el ItemsSource . Al utilizar el convertidor en el enlace, puede realizar la conversión que desea.

Tengo un cuadro combinado que está enlazado a una columna de datos como esta:

ComboBox.DataContext = DataDataTable; ComboBox.DisplayMemberPath = DataDataTable.Columns["IDNr"].ToString();

El IDNr en la columna siempre comienza con 4 letras seguidas del número de ID (por ejemplo, BLXF1234). Necesito mostrar los elementos en Combobox sin las letras (necesito que 1234 se muestre en el cuadro combinado).

Así que escribí un convertidor:

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, ¿cómo puedo decirle al cuadro combinado que use el convertidor para mostrar los elementos? Intenté esto en el Xaml:

ItemsSource="{Binding}" DisplayMemberPath="{Binding Converter={StaticResource IDPrefixValueConverter}}"

Pero todavía no funciona ... ¿alguna idea? Gracias