我有一个可编辑的组合框,下拉列表中并不总是首选项.
我希望能够在文本框中手动输入文本,该文本框会传播到绑定到SelectedValue的字符串.
现在,绑定到SelectedValue的字符串只有在输入的值位于组合框项目中的某个值上时才会更新.
如何允许手动输入组合框列表中不可用的自定义值,并将其正确传播到绑定值?
我有一个可编辑的组合框,下拉列表中并不总是首选项.
我希望能够在文本框中手动输入文本,该文本框会传播到绑定到SelectedValue的字符串.
现在,绑定到SelectedValue的字符串只有在输入的值位于组合框项目中的某个值上时才会更新.
如何允许手动输入组合框列表中不可用的自定义值,并将其正确传播到绑定值?
我昨天和今天都在做这件事,看起来是这样的:
将组合框设置为IsEditable="true"
与其绑定到SelectedItem
,不如绑定到combobox的Text
属性
如果要绑定到自定义对象而不仅仅是字符串,则还需要设置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}" />