[英]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.