Pregunta ComboBox editable con enlace al valor no en la lista


Tengo un combobox editable donde no siempre el elemento preferido está en la lista desplegable.

Me gustaría tener la posibilidad de ingresar manualmente texto en el cuadro de texto que se propaga a la cadena vinculada a SelectedValue.

En este momento, la cadena vinculada a SelectedValue solo se actualiza si el valor ingresado está activado en los elementos de ComboBox.

¿Cómo puedo permitir que los valores personalizados que no están disponibles en la lista de ComboBox se ingresen manualmente y se propaguen correctamente al valor encuadernado?


66
2017-09-18 19:58


origen


Respuestas:


Solo estaba haciendo esto ayer y hoy y se ve así:

  1. establecer el combobox IsEditable="true"

  2. en lugar de unirse a SelectedItem, atar a la Text propiedad del combobox

  3. Si está vinculando a un objeto personalizado en lugar de solo cadenas, también necesita establecer TextSearch.TextPath="NameOfField". Esto permite que el comportamiento de búsqueda de texto funcione y también muestra esta propiedad en el cuadro de texto.

En general, terminé con algo como:

<ComboBox x:Name="c" 
          IsEditable="True" 
          IsTextSearchEnabled="True" 
          IsTextSearchCaseSensitive="False" 
          StaysOpenOnEdit="True"
          Text="{Binding NameOnViewModel}"
          TextSearch.TextPath="NameOnChildItems"  
          ItemsSource="{Binding Items}" 
          ItemTemplate="{StaticResource DataTemplate}" />

<TextBlock Text="{Binding ElementName=c,Path=Text}" />

108
2017-11-16 23:50



Establecer el enlace a la propiedad Text de Combo también será suficiente.

<ComboBox  IsTextSearchEnabled="True"    IsEditable="True" 
ItemsSource="{Binding Items}" Text="{Binding SelectedItemText, Mode=TwoWay}" />

24
2017-12-12 11:50