如何在 Windows Phone 8.1 中保持 AutoSuggestBox 建议框打开
How to keep AutoSuggestBox suggestion box open in Windows Phone 8.1
使用 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,建议框在选择项目后仍然关闭。
如果您能在选择后帮助它保持打开状态,我们将不胜感激。
我找到的解决方案是挂钩 LayoutUpdated
事件。
我在 PickerFlyout 中有 AutoSuggestBox,所以我只想在 PickerFlyout 打开时打开建议框(很明显)。所以我在打开PickerFlyout的按钮上设置了一个Tag
属性来识别PickerFlyout是打开还是关闭。然后在 AutoSuggestBox 的 LayoutUpdated
事件中,如果 PickerFlyout 打开,我将 IsSuggestionListOpen
属性 设置为 true
(如果未打开,则设置 false
)。
代码:
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
事件会在所有正确的时间触发。
使用 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,建议框在选择项目后仍然关闭。
如果您能在选择后帮助它保持打开状态,我们将不胜感激。
我找到的解决方案是挂钩 LayoutUpdated
事件。
我在 PickerFlyout 中有 AutoSuggestBox,所以我只想在 PickerFlyout 打开时打开建议框(很明显)。所以我在打开PickerFlyout的按钮上设置了一个Tag
属性来识别PickerFlyout是打开还是关闭。然后在 AutoSuggestBox 的 LayoutUpdated
事件中,如果 PickerFlyout 打开,我将 IsSuggestionListOpen
属性 设置为 true
(如果未打开,则设置 false
)。
代码:
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
事件会在所有正确的时间触发。