2017-03-24 7 views
1

ユーザーがユーザー名とパスワードを入力すると、すぐにアプリケーションを開発して、ユーザーが選択できるようにボタンを選択したダイアログを表示し続けます。ログイン画面があるので、キーボードが表示されます。私は入力ボタンにたどり着いて、サインインボタンをタップするのと同じようにしました。これが私が問題に当たった場所です。ソフトキーボードのUWP XAML Windows Phoneダイアログの問題

キーボードがアクティブな間にダイアログが表示される場合、ダイアログコンテンツのサイズはキーボードが消えていてもフルスクリーンではありません。しかし、サインインボタンがタップされている(つまり、キーボードがアクティブではない)場合は、問題ありません。

以下の画像はおそらくもっと良いことを説明します。

Issue example

私はこれを解決するために何をすべきかわからない - 任意のアイデア?

FYI - 私はボタンをスクロールすることができますが、画面の上部にのみ表示されます。

+1

パスワードのテキストボックスを非表示にするには、キーボードを強制するために、プログラム注力失わせるようにしてください。 – Rafael

答えて

1

いつものように私は質問をして答えを見つけます。

「Enterボタンタップ」イベントを検出すると、そのページにフォーカスが設定されました。 ...私はむしろ、問題が起こっている理由を知って、それを止める完全にだけではなく、それに対処したいように、それはハックの少しだが、それは動作します

this.Focus(FocusState.Keyboard);// this is the line that solves it. 

全コード:

private void tbPassword_KeyUp(object sender, Windows.UI.Xaml.Input.KeyRoutedEventArgs e) 
{ 
    if (e.Key == Windows.System.VirtualKey.Enter) 
    { 
     this.Focus(FocusState.Keyboard); 
     StartLogin(); 
    } 
} 
0

@Rickには良い方法があります。しかし、私はあなたがキーボードショーを行うことができ、UWPがUIを手配できる他の良い方法があります。

あなたはキーボードを非表示にするInputPane.GetForCurrentView().TryHide()を使用して、キーボードを表示するInputPane.GetForCurrentView().TryShow()を使用することができます。 ContentDialogを表示したいときに隠すことができます。

しかし、私はそれが良い方法だとは思わない。

InputPane.GetForCurrentView().Showingを使用すると、keyBoardがいつ表示されるかを知ることができ、InputPane.GetForCurrentView().Hidingを使用してキーボードを非表示にするときを知ることができます。まず

、あなたが行でグリッドを作ることができるには、キーボードを表示それはハイトを取得しますショーのキーボードです。キーボードがあったこと

 <Grid.RowDefinitions> 
      <RowDefinition></RowDefinition>    
      <RowDefinition x:Name="HightKeyboard" Height="Auto"></RowDefinition> 
     </Grid.RowDefinitions> 

、あなたはキーボードの高さを取得e.OccludedRect.Height使用することができます。

 InputPane.GetForCurrentView().Showing += (s, e) => 
     { 
      HightKeyboard.Height=new GridLength(e.OccludedRect.Height); 
     }; 

そして、キーボードを非表示にするときは、行の高さを非表示にする必要があります。

 InputPane.GetForCurrentView().Hiding += (s, e) => 
     { 
      HightKeyboard.Height=new GridLength(1); 
     }; 

あなたが最初の行のUIを表示することができ、およびキーボードが表示されたときの高さは、上記手配されます。

関連する問題