2010-09-18 76 views
64

我有可編輯的組合框,其中並不總是首選項在下拉列表中。可編輯ComboBox綁定到值不在列表中

我想有可能在傳播到綁定到SelectedValue的字符串的文本框中手動輸入文本。

現在,綁定到SelectedValue的字符串僅在輸入的值位於ComboBox項目中的值上時更新。

如何允許手動輸入ComboBox列表中不可用的自定義值並將其正確傳播到綁定值?

回答

106

我只是在做這個,昨天和今天,它看起來像如下:

  1. 設置組合框IsEditable="true"

  2. 而是結合SelectedItem的,綁定到ComboBox

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

哦,如果你不使用ItemTemplate,你可以使用DisplayMemberPath =「Name」而不是使用DataTemplate。 – 2010-11-16 23:52:00

+1

太棒了!它也適用於數字 – Roberto 2012-08-20 13:59:43

24

設置綁定到文本組合的性能就足夠了爲好。

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

完美找到綁定到一個字符串列表。 – 2012-05-08 09:15:21

相關問題