3

ユーザーが多数のテキストボックスを介してデータを入力する必要があるWindowsストアアプリケーションがあります。

画面の下部にあるテキストボックスにフォーカスがあると、オンスクリーンキーボードが表示され、ページのコンテンツが上に移動します。これは素晴らしいことであり、私が欲しいものです。

ポップアップウィンドウがあると問題が発生します。ポップアップウィンドウが表示されると、実質的に全画面表示になっています。ポップアップウィンドウの子はユーザーコントロールであり、ここでも多くのテキストボックスがあります。ページの下部にあるテキストボックスの1つを選択すると、キーボードは表示されますが、画面は上に移動しないため、選択したテキストボックスの上にキーボードが表示されます。

これは、ポップアップを表示するために使用するコードです。

if (myPopup == null)
{
    myPopup = new Popup();

    myPopup.Child = new PopupFrom();

    // open the Popup                
    myPopup.IsOpen = true;
}

レイアウトが更新されたときにポップアップのサイズも手動で設定します

private void popup_LayoutUpdated(object sender, object e)
{
    if (Windows.UI.ViewManagement.ApplicationView.Value == Windows.UI.ViewManagement.ApplicationViewState.FullScreenLandscape)
    {
        popup.Width = 1280;
        popup.Height = 680;
    }
    else
    {
        popup.Width = 680;
        popup.Height = 1280;
    }
}

だから私の質問は、キーボードが表示され、ポップアップの下部近くにあるテキストボックスの1つと重なっているときに、ポップアップウィンドウを上に移動するにはどうすればよいですか?

前もって感謝します。

このWindows8ストアアプリを作成するためにC#とXAMLを使用しています。

4

2 に答える 2

4

私のアプリでは、InputPaneの表示/非表示イベントをリッスンします。これらのイベントは、キーボードまたはその他の入力デバイスが表示/非表示になったことを示します。

var pane = InputPane.GetForCurrentView();
pane.Showing += pane_Showing;
pane.Hiding += pane_Hiding;

イベントハンドラーでは、OccludedRectプロパティを使用して、入力領域(キーボードなど)の大きさを決定できます。次に、この長方形を覆わないようにポップアップをシフトできます。

于 2013-03-12T17:21:28.873 に答える
0

ポップアップの子のサイズを変更するには、重複するテキストボックスのgotFocusイベントをリッスンする必要があります。また、ポップアップの子としてScrollViewerを使用して、上記のコンテンツにスクロールできるようにすることをお勧めします。のようなもの:emailBox.GotFocus += (s, o) => AdjustPopup();幸運を!

于 2013-03-12T12:31:22.430 に答える