c# - 当控件变得可见时以编程方式设置焦点

标签 c# xaml focus autosuggest windows-10-mobile

我有一个 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="&#xE094;"
      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/

相关文章:

focus - 在处理鼠标和键盘事件之前确保我的 XNA 游戏有焦点

c# - C# 应用程序的应用程序设置

c# - 为什么我的 C# 控制台应用程序在复制文件时因 'Out of Memory' 异常而崩溃?

c# - 返回一个字符串数组.net c# web api

c# - 根据窗口大小自动缩放按钮 C#/XAML

c# - 如何使用 C# 或 XAML 创建自动动画轮播循环图像?

c# - PHP 准备的语句 - 无法选择 Varchar 行,选择数字行没有问题

c# - WPF DataGrid 在编辑时预填充单元格默认值

c# - 将焦点从一个控件切换到另一个控件

javascript - :focus in IE not working