我有一个可编辑的组合框,下拉列表中并不总是首选项.

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

现在,绑定到SelectedValue的字符串只有在输入的值位于组合框项目中的某个值上时才会更新.

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

推荐答案

我昨天和今天都在做这件事,看起来是这样的:

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

.net相关问答推荐

安装特定主要版本的DotNet SDK最新版本

MSBuild:CopyToOutputDirectory不会将本机DLL复制到输出

Docker镜像mcr.microsoft.com/dotnet/aspnet:8.0不能在Windows上构建

在`MAUI`应用中使用Android`MediaPlayer`的`prepare`方法只在发布模式下和在物理设备上崩溃

避免函数和其他对象之间的相互递归的模式?

在 C# 中生成随机小数

使用 Thread.Abort() 有什么问题

如何获得友好的操作系统版本名称?

C#6.0 字符串插值本地化

为什么我得到 411 Length required 错误?

如何在 WPF 应用程序中使用 App.config 文件?

String 是原始类型吗?

如何授予所有用户对我的应用程序创建的文件的完全权限?

如何异步 Files.ReadAllLines 并等待结果?

.NET 中的对象引用有多大?

无法加载文件或程序集System.ValueTuple

接口属性的 XML 序列化

对构造函数进行单元测试重要吗?

如何将我的应用程序窗口置于最前面?

多行 C# 插值字符串文字