【发布时间】:2017-11-24 02:29:48
【问题描述】:
我有一个AutoSuggestBox,可见性设置为Collapsed。在同一个视图页面中,我有一个按钮。单击按钮时,我想显示AutoSuggestBox。而当查询已经提交或AutoSuggestBox失去焦点时,我想再次隐藏它。
这是 AutoSuggestBox 和按钮:
<AutoSuggestBox Name="MainAutoSuggestBox"
Grid.Row="2"
GotFocus="MainAutoSuggestBox_GotFocus"
Visibility="Collapsed"
QueryIcon="Find"
QuerySubmitted="MainAutoSuggestBox_QuerySubmitted"
LostFocus="MainAutoSuggestBox_LostFocus"/>
<Button Name="TopBarSearchButton"
Content="Button"
Click="TopBarSearchButton_Click"/>
我的代码隐藏:
class SomePage : page
{
...
...
private void MainAutoSuggestBox_GotFocus(object sender, RoutedEventArgs e)
{
//only for testing purposes
}
private void MainAutoSuggestBox_LostFocus(object sender, RoutedEventArgs e)
{
MainAutoSuggestBox.Visibility = Visibility.Collapsed;
//put focus on the page
this.Focus(FocusState.Programmatic);
}
private void MainAutoSuggestBox_QuerySubmitted(AutoSuggestBox sender, AutoSuggestBoxQuerySubmittedEventArgs args)
{
//Do something
//Works fine
}
private void TopBarSearchButton_Click(object sender, RoutedEventArgs e)
{
HandleSearchButtonClick();
}
private void HandleSearchButtonClick()
{
if (MainAutoSuggestBox.Visibility == Visibility.Collapsed)
{
MainAutoSuggestBox.Visibility = Visibility.Visible;
MainAutoSuggestBox.Focus(FocusState.Programmatic);
}
else
{
MainAutoSuggestBox.Visibility = Visibility.Collapsed;
}
}
}
现在的问题是当我点击按钮TopBarSearchButton
第一次,MainAutoSuggestBox 的可见性切换,但焦点未设置在 MainAutoSuggestBox 上。但从第二次开始,它按预期工作,即,单击按钮后,MainAutoSuggestBox 的可见性切换以及焦点设置在MainAutoSuggestBox 上。
在调试的时候发现第一次点击按钮的时候,
控制流在HandleSearchButtonClick() 内到达MainAutoSuggestBox.Focus(FocusState.Programmatic); 行,但它从未到达
private void MainAutoSuggestBox_GotFocus(object sender, RoutedEventArgs e)
方法,但是从第二次开始,它确实命中了
private void MainAutoSuggestBox_GotFocus(object sender, RoutedEventArgs e)
方法。
【问题讨论】:
-
标题是
UWP。