如何在Windows Phone 8.1中打开AutoSuggestBox建议框

时间:2015-01-15 03:08:45

标签: windows-runtime windows-phone-8.1 winrt-xaml

在Windows Phone 8.1(WinRT XAML)中使用新的AutoSuggestBox控件,我试图保持建议框始终打开 - 即使在用户点击建议后也是如此。

通过以编程方式设置AutoSuggestBox.IsSuggestionListOpen = true;

打开建议框,我没有任何问题

然后我像这样挂钩SuggestionChosen事件:

private void AutoSuggestBox_SuggestionChosen(AutoSuggestBox sender, AutoSuggestBoxSuggestionChosenEventArgs args) {
    sender.Text = args.SelectedItem.ToString();
    sender.IsSuggestionListOpen = true;
}

但不幸的是,即使我将IsSuggestionListOpen设置为true,选择项目后建议框仍会关闭。

在选择之后让它保持开放的任何帮助都将受到赞赏。

1 个答案:

答案 0 :(得分:1)

我发现的解决方案是挂钩LayoutUpdated事件。

我在PickerFlyout中有AutoSuggestBox,所以如果PickerFlyout打开(显然),我只想打开建议框。因此,我在按钮上设置Tag属性,打开PickerFlyout以识别PickerFlyout是打开还是关闭。然后在AutoSuggestBox的LayoutUpdated事件中,如果PickerFlyout已打开,我将IsSuggestionListOpen属性设置为true(如果不是,则将false设置为。{/ p>

代码:

private void PickerFlyout_Opened(object sender, object e) {
    ActivatePickerFlyoutButton.Tag = "open";
}

private void PickerFlyout_Closed(object sender, object e) {
    ActivatePickerFlyoutButton.Tag = "closed";
}

private void AutoSuggestBox_LayoutUpdated(object sender, object e) {
    AutoSuggestBox.IsSuggestionListOpen = ((ActivatePickerFlyoutButton.Tag as string).Equals("open"));
}

这是我需要设置IsSuggestionListOpen属性的唯一地方,因为LayoutUpdated事件会在所有正确的时间触发。