Edytowalny ComboBox z powiązaniem z wartością, której nie ma na liście
Mam edytowalny combobox, gdzie nie zawsze preferowany element znajduje się na rozwijanej liście.
Chciałbym mieć możliwość ręcznego wprowadzania tekstu w polu tekstowym, który jest propagowany do łańcucha związanego z SelectedValue.
W tej chwili łańcuch związany z SelectedValue jest aktualizowany tylko wtedy, gdy wprowadzona wartość znajduje się na pozycji ComboBox.
Jak mogę ręcznie wprowadzić wartości niestandardowe niedostępne na liście ComboBox i odpowiednio propagowane do wartości wiązanej?
2 answers
Robiłam to wczoraj i dziś i wygląda to następująco:
Ustaw combobox
IsEditable="true"
-
Zamiast wiązania do
SelectedItem
, bind do WłaściwościText
combobox Jeśli wiążesz się z obiektem niestandardowym, a nie tylko z łańcuchami znaków, musisz również ustawić
TextSearch.TextPath="NameOfField"
. Pozwala to na działanie wyszukiwania tekstu, a także pokazuje tę właściwość w polu tekstowym.
W sumie, skończyłem z czymś like:
<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}" />
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-02 14:40:46
Ustawienie właściwości powiązanie z tekstem Combo również wystarczy.
<ComboBox IsTextSearchEnabled="True" IsEditable="True"
ItemsSource="{Binding Items}" Text="{Binding SelectedItemText, Mode=TwoWay}" />
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-27 11:25:53