具有绑定到值的可编辑ComboBox不在列表中

时间:2010-09-18 19:58:21

标签: .net wpf combobox editing

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

我希望能够在文本框中手动输入文本,该文本传播到绑定到SelectedValue的字符串。

现在绑定到SelectedValue的字符串只有在ComboBox项目中输入的值打开时才会更新。

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

2 个答案:

答案 0 :(得分:120)

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

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

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

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

  4. 总而言之,我最终得到了类似的东西:

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

答案 1 :(得分:26)

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

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