我有一个windows商店应用程序,需要用户通过许多文本框输入数据。
当靠近屏幕底部的文本框具有焦点时,屏幕上的键盘会出现,并将页面内容向上移动。这很棒,也是我想要的。
当我有一个弹出窗口时,我的问题就出现了。当弹出窗口出现时,它实际上是全屏的。弹出窗口的子控件是一个用户控件,上面同样有很多文本框。当选择了页面底部附近的一个文本框时,键盘会出现,但屏幕不会向上移动,因此键盘会出现在所选文本框的上方。
这是我用来显示弹出窗口的代码:
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;
}
}所以我的问题是,当键盘显示并与弹出窗口底部附近的一个文本框重叠时,我如何向上移动弹出窗口?
提前谢谢。
我正在使用C#和XAML来编写这个windows 8商店应用程序。
发布于 2013-03-13 01:21:29
在我的应用程序中,我收听InputPane的显示/隐藏事件。当键盘或其他输入设备显示/隐藏时,这些事件会告诉您:
var pane = InputPane.GetForCurrentView();
pane.Showing += pane_Showing;
pane.Hiding += pane_Hiding;在事件处理程序中,您可以使用OccludedRect属性来确定输入区域(例如键盘)的大小。然后,您可以移动弹出窗口,使其不会覆盖此矩形。
发布于 2013-03-12 20:31:22
您需要侦听重叠文本框的gotFocus事件,才能修改弹出窗口的子维度。此外,我建议使用ScrollViewer作为弹出窗口的子级,以允许滚动到上面的内容。比如:emailBox.GotFocus += (s, o) => AdjustPopup();祝你好运!
https://stackoverflow.com/questions/15357976
复制相似问题