2017-10-04 12 views
0

簡単なことですが、クリックすると自動選択ボックスが開き、それに焦点を合わせて携帯電話でキーボードを開くか、自分でクリックせずに簡単に書くことができますAutoSuggestBox.focusが初めて動作しません

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はautosuggestboxとbutttonある]

それは私がASboxが表示されるように、ボタンをクリックして二回目、初めてではないから作品 - なぜですか?どのように私はそれを初めて行うことができるように強制することができますか?すべての

ありがとう:}

答えて

0

それは私が初めてではない、ASboxが表示されるように、ボタンをクリックして二回目からの作品 - なぜですか?

あなたがフォーカス方式を設定するの戻り結果を取得しようとしている場合は、(FocusメソッドクラスControlのを参照してください)コントロールがフォーカス可能ではない、いくつかの理由のための手段は初めてAutoSuggestion.Focus戻りfalse、ことがわかります。これは、初めて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; 
} 
関連する問題