C# 屏幕键盘显示时调整winrt页面大小

C# 屏幕键盘显示时调整winrt页面大小,c#,textbox,keyboard,windows-runtime,C#,Textbox,Keyboard,Windows Runtime,我有一个Windows8.1C应用程序,它显示一个带有相当大的文本框的页面(几乎覆盖了整个页面;这是一个写作应用程序) 当屏幕键盘显示时,它覆盖文本框的一半。 我想调整文本框(甚至整个页面)的大小,使其不被键盘覆盖 我现在正尝试使用静态InputPane并订阅其显示和隐藏事件来实现这一点。然后,我尝试使用eventargs中提供的隐藏矩形更改文本框的边距。这是可行的,但由于我的页面仍然是屏幕的高度,它会将页面滚动到底部的一半 public MainPage() { var inputPa

我有一个Windows8.1C应用程序,它显示一个带有相当大的文本框的页面(几乎覆盖了整个页面;这是一个写作应用程序)

当屏幕键盘显示时,它覆盖文本框的一半。 我想调整文本框(甚至整个页面)的大小,使其不被键盘覆盖

我现在正尝试使用静态InputPane并订阅其显示和隐藏事件来实现这一点。然后,我尝试使用eventargs中提供的隐藏矩形更改文本框的边距。这是可行的,但由于我的页面仍然是屏幕的高度,它会将页面滚动到底部的一半

public MainPage()
{
    var inputPane = InputPane.GetForCurrentView();
    inputPane.Showing += this.InputPaneShowing;
    inputPane.Hiding += this.InputPaneHiding;
}

void InputPaneHiding(InputPane sender, InputPaneVisibilityEventArgs args)
{
    this.EditBox.Margin = new Thickness();
}

private void InputPaneShowing(InputPane sender, InputPaneVisibilityEventArgs args)
{
    this.EditBox.Margin = new Thickness(0, 0, 0, args.OccludedRect.Height);
}
当我尝试这个方法时,我觉得这不是一个理想的解决方案,但是我没有更好的主意。理想情况下,当你打开应用程序时,我会认为它会像垂直分割一样,但是水平分割时,键盘在底部,应用程序的大小只能在键盘上方


知道这是否可行吗?

因为您自己处理接口阻塞,所以应该从InputPane中设置属性。将eventargs显示为true。这将阻止界面自动滚动

 private void InputPaneShowing(InputPane sender, InputPaneVisibilityEventArgs args)
 {
    args.EnsuredFocusedElementInView = true;
    this.EditBox.Margin = new Thickness(0, 0, 0, args.OccludedRect.Height);
 };

您是否尝试过设置页面的
边距
,或直接设置其高度?是的@Rafael,我尝试了“边距”,它导致了一种奇怪的行为,它仍然会向上滚动页面,就像它的原始大小一样,这导致我的(白色)页面停止时出现一个黑色空间。(不知道这是否清楚,难以书面解释:))。我正在努力!嗯,当设置页面高度时,它什么都不做。在我用计算值设置它之前,我还看到高度是NaN(顺便说一下,在这之后它仍然保持NaN)。这正常吗?嗯。。。奇怪的是,我无法测试这一点,因为我手头没有触控电脑:-S.Hi@Rafael,我也在模拟器中尝试。我这里也有一个触摸设备,但它的效果是一样的……谢谢你,@Cyprien Autexier,我今晚回家后会试试这个!惊人的@Cyprien,就像一个魅力!我现在正在设置页面的边距(而不是编辑框),这会导致我的整个应用程序占用键盘上方的剩余空间,看起来非常完美!