具有绑定到值的可编辑组合框不在列表中


81

我有可编辑的组合框,但并非总是首选项位于下拉列表中。

我想在传播到绑定到SelectedValue的字符串的文本框中手动输入文本的可能性。

现在,仅当输入的值位于ComboBox项中的值上时,才会更新绑定到SelectedValue的字符串。

如何允许手动输入ComboBox列表中不可用的自定义值并将其正确传播为绑定值?

Answers:


135

我昨天和今天只是这样做,它看起来像下面这样:

  1. 设置组合框 IsEditable="true"

  2. 而不是绑定到SelectedItem,而是绑定到Text组合框的属性

  3. 如果要绑定到自定义对象而不是仅绑定到字符串,则还需要设置TextSearch.TextPath="NameOfField"。这可以使文本搜索行为起作用,并且还可以在文本框中显示此属性。

总而言之,我最终得到如下结果:

<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}" />

4
哦,如果您不使用ItemTemplate,则可以使用DisplayMemberPath =“ Name”而不是DataTemplate。
约翰·加德纳

28

设置对Combo的Text属性的绑定也将足够。

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

1
完美找到绑定到字符串列表的作品。
Herman Cordes,2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.