Wpf 组合框允许编辑,如果所有组合框项目都是字符串,或者在它们上定义了 ToString() 方法,那么这很好。
当您选择一个项目时,它显示为文本,它不使用 DataTemplate,它只是对所选项目调用 ToString()。
我在组合下拉列表中得到一个使用我的项目模板格式化的项目列表,当我选择一个项目时,我会得到该对象的名称,即MyNamespace.MyObjectName
一些解决方案已经
- 使用 ValuePath 绑定到属性
在物体上,但如果你需要
您的显示器不只之一
这些,运气不好。
- 实现 ToString() 方法
你的对象
还有其他办法吗?
您可以完全在 Xaml 中完成此操作
<ComboBox IsTextSearchEnabled="True" IsEditable="True"
ItemsSource="{Binding MyObjectCollection}"
TextSearch.TextPath="MyObjectName">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding MyObjectName}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
好处是您可以在 XAML 中根据需要定义和更改此设置,而无需任何代码隐藏。您将 ItemsSource 绑定到对象集合,然后设置搜索的路径文本搜索.文本路径 https://learn.microsoft.com/dotnet/api/system.windows.controls.textsearch.textpath。然后,在自定义 ItemTemplate 中,您可以将 TextBlock 绑定到对象的 ToString 方法之外的其他内容。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)