首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当windows 8商店应用程序中显示Surface键盘时,弹出窗口不会向上移动

当windows 8商店应用程序中显示Surface键盘时,弹出窗口不会向上移动
EN

Stack Overflow用户
提问于 2013-03-12 17:53:13
回答 2查看 2.6K关注 0票数 3

我有一个windows商店应用程序,需要用户通过许多文本框输入数据。

当靠近屏幕底部的文本框具有焦点时,屏幕上的键盘会出现,并将页面内容向上移动。这很棒,也是我想要的。

当我有一个弹出窗口时,我的问题就出现了。当弹出窗口出现时,它实际上是全屏的。弹出窗口的子控件是一个用户控件,上面同样有很多文本框。当选择了页面底部附近的一个文本框时,键盘会出现,但屏幕不会向上移动,因此键盘会出现在所选文本框的上方。

这是我用来显示弹出窗口的代码:

代码语言:javascript
复制
if (myPopup == null)
{
    myPopup = new Popup();

    myPopup.Child = new PopupFrom();

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

当布局更新时,我还手动调整弹出窗口的大小

代码语言:javascript
复制
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;
    }
}

所以我的问题是,当键盘显示并与弹出窗口底部附近的一个文本框重叠时,我如何向上移动弹出窗口?

提前谢谢。

我正在使用C#和XAML来编写这个windows 8商店应用程序。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-13 01:21:29

在我的应用程序中,我收听InputPane的显示/隐藏事件。当键盘或其他输入设备显示/隐藏时,这些事件会告诉您:

代码语言:javascript
复制
var pane = InputPane.GetForCurrentView();
pane.Showing += pane_Showing;
pane.Hiding += pane_Hiding;

在事件处理程序中,您可以使用OccludedRect属性来确定输入区域(例如键盘)的大小。然后,您可以移动弹出窗口,使其不会覆盖此矩形。

票数 4
EN

Stack Overflow用户

发布于 2013-03-12 20:31:22

您需要侦听重叠文本框的gotFocus事件,才能修改弹出窗口的子维度。此外,我建议使用ScrollViewer作为弹出窗口的子级,以允许滚动到上面的内容。比如:emailBox.GotFocus += (s, o) => AdjustPopup();祝你好运!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15357976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档