【发布时间】:2013-12-10 17:11:20
【问题描述】:
我有一个 Windows 8.1 C# 应用程序,它显示一个带有相当大文本框的页面(几乎覆盖了整个页面;它是一个写作应用程序)。
当屏幕键盘出现时,它会覆盖一半的文本框。 我想调整文本框(甚至整个页面)的大小,使其不被键盘覆盖。
我现在正在尝试使用静态 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);
}
在尝试这个时,我觉得这不是理想的解决方案,但我没有更好的主意。理想情况下,我认为当您必须打开应用程序时,它会类似于垂直拆分,然后水平拆分,键盘位于底部,应用程序只有键盘上方可用的大小。
知道这是否可能吗?
【问题讨论】:
-
你试过设置页面的
Margin还是直接设置它的高度? -
是的@Rafael,我尝试了“边距”,它引起了一些奇怪的行为,它仍然会向上滚动我的页面,就像它原来的大小一样,导致我的 (白色)页面停止。 (不知道这是否清楚,难以用书面解释:))。我现在正在尝试的高度!
-
嗯,设置Page的高度时,它什么也没做。在我用我的计算值设置它之前,我还看到高度是 NaN(顺便说一下,之后它仍然保持 NaN)。这正常吗?
-
嗯...奇怪,我无法测试这个,因为我手头没有支持触摸的计算机:-S。
-
嗨@Rafael,我也在模拟器中尝试这个。我这里也有一个触摸设备,但它给出了相同的结果......
标签: c# textbox keyboard windows-runtime