簡體   English   中英

AutoSuggestBox.focus第一次不起作用

[英]AutoSuggestBox.focus doesn't work first time

一個簡單的事情,一個按鈕,當您單擊它時,它會打開一個自動提示框,讓我專注於此,並在移動設備上打開鍵盤,或者能夠在不單擊“文本區域”的情況下直接書寫

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時開始起作用,而不是第一次出現-為什么? 我怎么能強迫它也能第一次做到這一點?

謝謝大家 :}

它從第二次單擊按鈕以顯示ASbox時開始起作用,而不是第一次出現-為什么?

如果嘗試獲取設置focus方法的返回結果,則會發現AutoSuggestion.Focus第一次返回false ,這意味着由於某些原因該控件不可聚焦(請參見Control類的Focus方法)。 這應該是AutoSuggestBox第一次不被關注的原因。

對於為什么控件無法聚焦的原因,可能是由於我添加了一點Task.Delay導致AutoSuggestBox尚未完成初始化導致的,這是第一次工作。 測試代碼段如下:

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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM