我有一个 AutoSuggestBox
,它仅在我单击按钮时显示。当 AutoSuggestBox
变得可见时,它也应该获得焦点。
我尝试了很多方法,但都没有用。
我的代码:
<AutoSuggestBox x:Name="AutoSearchBar"
HorizontalAlignment="Right"
VerticalAlignment="Center"
PlaceholderText="Text to find"
Visibility="Collapsed"/>
<Button x:Name="searchButton"
Visibility="Visible"
HorizontalAlignment="Right"
FontFamily="Segoe MDL2 Assets"
Background="Red"
Content=""
Click="searchButton_Click"/>
代码隐藏:
private void searchButton_Click(object sender, RoutedEventArgs e)
{
AutoSearchBar.Visibility = Visibility.Visible;
searchButton.Visibility = Visibility.Collapsed;
}
我试图将它放在代码隐藏 searchButton_Click
中,但是 AutoSearchBar
控件只出现并且没有焦点。
AutoSearchBar.Focus(FocusState.Keyboard);
AutoSearchBar.Focus(FocusState.Pointer);
AutoSearchBar.Focus(FocusState.Programmatic);
最佳答案
有时,适用于 Windows 10(和 8.1 RT)的 XAML 行为异常。引入一个小的延迟通常可以解决它。我尝试通过任务工厂运行它,它在我的机器 (TM) 上运行。
private void searchButton_Click(object sender, RoutedEventArgs e)
{
searchButton.Visibility = Visibility.Collapsed;
AutoSearchBar.Visibility = Visibility.Visible;
// slightly delay setting focus
Task.Factory.StartNew(
() => Dispatcher.RunAsync(CoreDispatcherPriority.Low,
() => AutoSearchBar.Focus(FocusState.Programmatic)));
}
关于c# - 当控件变得可见时以编程方式设置焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32767988/