Windows phone 7 如何在WindowsPhone7中关闭自动完成框的下拉列表
是否仍然可以通过编程方式取消自动完成框的下拉列表?我的用例如下 MainPage.xaml将一个值传递给SearchPage.xaml(即/SearchPage.xaml?query=someText) 在SearchPage.xaml.cs中,我设置Windows phone 7 如何在WindowsPhone7中关闭自动完成框的下拉列表,windows-phone-7,autocompletebox,Windows Phone 7,Autocompletebox,是否仍然可以通过编程方式取消自动完成框的下拉列表?我的用例如下 MainPage.xaml将一个值传递给SearchPage.xaml(即/SearchPage.xaml?query=someText) 在SearchPage.xaml.cs中,我设置 autoCompleteBox.Text = NavigationContext.QueryString["query"]. 此时,将显示建议匹配项的下拉列表。我不希望在页面刚刚被导航到时出现这种行为 我还尝试了以下方法来删除下拉列表,但没有
autoCompleteBox.Text = NavigationContext.QueryString["query"].
此时,将显示建议匹配项的下拉列表。我不希望在页面刚刚被导航到时出现这种行为
我还尝试了以下方法来删除下拉列表,但没有效果
autoCompleteBox.Text = NavigationContext.QueryString["query"];
autoCompleteBox.IsDropDownOpen = false;
当AutoCompleteBox失去焦点时,下拉列表似乎会从中消失,但我没有看到设置属性/字段以使其失去焦点
感谢您的帮助
嗯,我做了一些修改,得出了一个乱七八糟的结论。在SearchPage.xaml.cs的构造函数中,我有以下代码
autoCompleteBox.TextFilter += DummyFilter;
autoCompleteBox.GotFocus += (s,args) => {
if(!isAutoCompleteBoxInit) {
autoCompleteBox.TextFilter -= DummyFilter;
autoCompleteBox.TextFilter += RealFilter;
}
}
DummyFilter如下所示
bool DummyFilter(string search, string value) { return false; }
bool RealFilter(string search, string value) {
if(null != value) return value.ToLower().StartsWith(search.ToLower());
}
RealFilter如下所示
bool DummyFilter(string search, string value) { return false; }
bool RealFilter(string search, string value) {
if(null != value) return value.ToLower().StartsWith(search.ToLower());
}
在我的OnNavigatedTo方法中,是我设置autoCompleteBox.Text=NavigationContext.QueryString[“query”]的地方。因此,当我现在这样做时,DummyFilter将始终返回false,因此下拉列表将消失。当用户关注AutoCompleteBox时,我检查是否已将正确的筛选器附加到TextFilter属性,如果没有,则进行切换
希望这对你们中的一些人有所帮助。页面上还有其他可聚焦控件吗?只要把焦点放在别的地方,你的问题就会解决。当你更改自动完成框的文本时,下拉列表就会打开。只有当用户更改了文本并且存在匹配项时,下拉列表才会关闭
private void UpdateTextCompletion(bool userInitiated)
{
userInitiated = true; ...
只要将userInitiated更改为true,当出现匹配时,下拉列表将关闭
private void UpdateTextCompletion(bool userInitiated)
{
userInitiated = true; ...
不,那不行。我添加了一个TextBlock,并将其可见性设置为在设计时折叠。当页面被导航到时,我调用了TextBlock.Focus(),这一点都没有帮助。它对我来说唯一有效的方法就是我上面所说的。@user373312当它从可视树中移除时,无法对折叠的内容设置焦点。您是否尝试过此方法。focus()将焦点设置为整个页面?