Windows phone 7 如何在WindowsPhone7中关闭自动完成框的下拉列表

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"]. 此时,将显示建议匹配项的下拉列表。我不希望在页面刚刚被导航到时出现这种行为 我还尝试了以下方法来删除下拉列表,但没有

是否仍然可以通过编程方式取消自动完成框的下拉列表?我的用例如下

MainPage.xaml将一个值传递给SearchPage.xaml(即/SearchPage.xaml?query=someText)

在SearchPage.xaml.cs中,我设置

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()将焦点设置为整个页面?