【问题标题】:AutoSuggestBox.focus doesn't work first timeAutoSuggestBox.focus 第一次不起作用
【发布时间】:2018-03-16 05:40:13
【问题描述】:

一个简单的东西,一个按钮,当你点击它时,它会打开一个自动提示框,让我专注于它并在移动设备上打开键盘,或者只需自己在“文本区域”上点击即可书写

Boolean AutoSuggestBoxRicercaOn = true;

public MainPage()
{
    this.InitializeComponent();
    AutoSuggestion.Visibility = Visibility.Collapsed;
}

private void Button_Click(object sender, RoutedEventArgs e)
{
    if (AutoSuggestBoxRicercaOn)
    {
        AutoSuggestion.Visibility = Visibility.Visible;
        AutoSuggestBoxRicercaOn = false;

        AutoSuggestion.Focus(FocusState.Programmatic);
    }
    else
    {
        AutoSuggestion.Visibility = Visibility.Collapsed;
        AutoSuggestBoxRicercaOn = true;
    }
}

[xml 是一个自动提示框和一个按钮]

当我第二次单击按钮使 ASbox 可见时,它开始工作,而不是第一次 - 为什么?我怎么能强迫它在第一次也能做到这一点?

感谢大家:}

【问题讨论】:

    标签: c# user-interface uwp focus autosuggest


    【解决方案1】:

    当我第二次单击按钮使 ASbox 可见时,它开始工作,而不是第一次 - 为什么?

    如果你尝试获取设置焦点方法的返回结果,你会发现第一次AutoSuggestion.Focus返回false,这意味着由于某些原因控件不可聚焦(见Focus方法Control 类)。这应该是AutoSuggestBox第一次没有聚焦的原因。

    为什么控件无法聚焦,可能是AutoSuggestBox没有完成初始化,我加了一点Task.Delay,第一次成功。测试代码sn-p如下:

    private async void Button_Click(object sender, RoutedEventArgs e)
    {
        if (AutoSuggestBoxRicercaOn)
        {
            AutoSuggestion.Visibility = Visibility.Visible;
            AutoSuggestBoxRicercaOn = false;
            await Task.Delay(TimeSpan.FromSeconds(0.05));
            bool setresult = AutoSuggestion.Focus(FocusState.Programmatic);
            System.Diagnostics.Debug.WriteLine("the setting focus result:" + setresult)
        }
        else
        {
            AutoSuggestion.Visibility = Visibility.Collapsed;
            AutoSuggestBoxRicercaOn = true;
        }
    }
    

    我怎样才能强制它在第一次也能做到这一点?

    您可以将初始 Visibility 属性设置放在 Page_Loaded 事件句柄中,而不是构造函数中。哪一种效果一样,第一次就可以了。

    <Page
        ...
        mc:Ignorable="d" 
        Loaded="Page_Loaded">
    
    private void Page_Loaded(object sender, RoutedEventArgs e)
    {
        AutoSuggestion.Visibility = Visibility.Collapsed;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-16
      • 2018-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多