【发布时间】:2020-01-01 09:06:57
【问题描述】:
我正在开发 UWP APP,其中一项功能是我允许用户从下拉列表中选择国家。当用户单击列表时,它会显示该国家的整个列表,该列表太大而无法选择特定国家。我的要求是如何添加一个逻辑,用户可以在下拉列表中输入一个字母,并且列表应该自动向下滚动到列表中与用户输入的字母匹配的第一个字母。
【问题讨论】:
我正在开发 UWP APP,其中一项功能是我允许用户从下拉列表中选择国家。当用户单击列表时,它会显示该国家的整个列表,该列表太大而无法选择特定国家。我的要求是如何添加一个逻辑,用户可以在下拉列表中输入一个字母,并且列表应该自动向下滚动到列表中与用户输入的字母匹配的第一个字母。
【问题讨论】:
您可以使用IsTextSearchEnabled 和IsEditable 属性来满足您的需求。
例如:
假设您有一个名为 CountryCollection 的 List<string> 作为数据源。
<ComboBox IsEditable="True"
IsTextSearchEnabled="True"
ItemsSource="{x:Bind CountryCollection}"
...
/>
这样可以在ComboBox中输入文字,ComboBox会匹配数据源中的数据,如果下拉列表打开也可以跳转。
如果你的数据源不是String类型,而是更复杂的结构,为了实现这个功能,需要重写ToString方法。
public class CountryModel
{
public string Name {get;set;}
public override string ToString()
{
return Name;
}
}
最好的问候。
【讨论】:
TextBox 和 Flyout 并监听 TextBox 的 KeyPressed 事件以做出相应的响应。