如何设置focus/place克拉到搜索框
How to set focus/place caret to SearchBox
我得到了这个布局:
<RelativePanel>
<ButtonContent="" Name="btHumburger"/>
<Button Content="" Name="btBack"/>
<TextBlock Text="Home" Name="tbHeader"/>
<Button Content="" Name="btSearch"/>
<SearchBox Visibility="Collapsed" Name="asbSearch" LostFocus="asbSearch_LostFocus"/>
</RelativePanel>
而且我只想在按下按钮 btSearch
时显示 SearchBox
,并在失去焦点时隐藏它。在代码隐藏中:
private void btSearch_Click(object sender, RoutedEventArgs e)
{
asbSearch.Visibility = Visibility.Visible;
asbSearch.Focus(FocusState.Programmatic);
btHumburger.Visibility = Visibility.Collapsed;
btBack.Visibility = Visibility.Collapsed;
tbHeader.Visibility = Visibility.Collapsed;
btSearch.Visibility = Visibility.Collapsed;
}
private void asbSearch_LostFocus(object sender, RoutedEventArgs e)
{
asbSearch.Visibility = Visibility.Collapsed;
btHumburger.Visibility = Visibility.Visible;
btBack.Visibility = mainFrame.CanGoBack ? Visibility.Visible : Visibility.Collapsed;
tbHeader.Visibility = Visibility.Visible;
btSearch.Visibility = Visibility.Visible;
}
但是 asbSearch
在 asbSearch.Focus(FocusState.Programmatic);
之后没有得到 focused/placed 插入符号,所以 LostFocus
事件不会触发。如何处理?
尝试在设置焦点之前调用 asbSearch.UpdateLayout();
。
似乎 Visibility
更改没有完全完成,在此之前控件无法获得焦点。
我得到了这个布局:
<RelativePanel>
<ButtonContent="" Name="btHumburger"/>
<Button Content="" Name="btBack"/>
<TextBlock Text="Home" Name="tbHeader"/>
<Button Content="" Name="btSearch"/>
<SearchBox Visibility="Collapsed" Name="asbSearch" LostFocus="asbSearch_LostFocus"/>
</RelativePanel>
而且我只想在按下按钮 btSearch
时显示 SearchBox
,并在失去焦点时隐藏它。在代码隐藏中:
private void btSearch_Click(object sender, RoutedEventArgs e)
{
asbSearch.Visibility = Visibility.Visible;
asbSearch.Focus(FocusState.Programmatic);
btHumburger.Visibility = Visibility.Collapsed;
btBack.Visibility = Visibility.Collapsed;
tbHeader.Visibility = Visibility.Collapsed;
btSearch.Visibility = Visibility.Collapsed;
}
private void asbSearch_LostFocus(object sender, RoutedEventArgs e)
{
asbSearch.Visibility = Visibility.Collapsed;
btHumburger.Visibility = Visibility.Visible;
btBack.Visibility = mainFrame.CanGoBack ? Visibility.Visible : Visibility.Collapsed;
tbHeader.Visibility = Visibility.Visible;
btSearch.Visibility = Visibility.Visible;
}
但是 asbSearch
在 asbSearch.Focus(FocusState.Programmatic);
之后没有得到 focused/placed 插入符号,所以 LostFocus
事件不会触发。如何处理?
尝试在设置焦点之前调用 asbSearch.UpdateLayout();
。
似乎 Visibility
更改没有完全完成,在此之前控件无法获得焦点。