sla*_*oah 5 c# combobox uwp windows-10-universal
我在UWP应用程序中添加了一个ComboBox,我正在为Windows 10工作,我无法使用它,以便用户可以输入自由文本,如果他们需要的值与任何可用的值不匹配选择.
我怎样才能做到这一点?
根据MSDN,描述为ComboBox.IsEditable:
获取或设置一个值,该值启用或禁用编辑ComboBox文本框中的文本.
这似乎是需要的.但是,这似乎只适用于WPF.
它似乎没有IsEditableXAML上的可设置属性:
在后面的代码中,当我尝试访问此属性时,它显示该属性仅具有get并始终返回false:
请让我知道如何才能实现这一目标.谢谢!
我还没有尝试过,但这里是 UWP 上带有可编辑文本框的 ComboBox 的实现。
而且,基本上,自动建议选项与可编辑的组合框完全不同 - 自动建议只是建议当前项目列表中的候选项,但不接受输入新项目。要实现它,您需要像上面的人一样实现自定义用户控件。
添加于 2018 年 10 月- 从 Windows 10 October 2018 更新开始,ComboBox 现在具有 IsEditable 属性。哇!尚未详细记录,但这篇博客文章很有帮助。
XAML ComboBox IsEditable 和文本属性
如果您的 UWP 应用程序在至少具有Anniversary Update, 版本的设备上运行,并且您已将UWP 项目的最低平台版本设置为至少Anniversary Update(版本 1607),则您将能够利用 Dependency Property IsTextSearchEnabled,通过设置该属性to True将允许您通过键入跳转到一个值。
问题是,您应该通过利用该类在代码隐藏中而不是在 XAML 中实例化它ApiInformation,从而防止您的应用程序在无法识别此依赖属性的较旧 Windows 10 版本上运行的情况。详情请点击这里
如果您的应用程序的最低目标版本是 Creators Update 版本,您还可以根据 . 条件XAML
定义一个自定义命名空间,它对应于一个条件方法,您可以在其中查询 UniversalApiContract 的第三个版本是否存在(此依赖项属性所需的最低限度)。
xmlns:contract3Present="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractPresent(Windows.Foundation.UniversalApiContract,3)"
Run Code Online (Sandbox Code Playgroud)
然后在您的组合框中,您可以执行以下操作:
<ComboBox contract3Present:IsTextSearchEnabled="True"/>
Run Code Online (Sandbox Code Playgroud)
仅当运行应用程序的设备具有所需的操作系统版本时,才会设置此依赖项属性!
与所讨论的完全不同的另一个解决方案是Custom Control您可以扩展ComboBox逻辑,为其实现文本搜索。您可以在获得焦点时监听按键ComboBox,并且可以根据按下的按键来命令收集。