我想创建一个Windows Phone 8.1 Silverlight / XAML UI,包含类似于Cortana中使用的搜索框。文本框应位于页面底部,然后使用键盘滚动,一旦获得焦点。我的其余部分根本不应该移动。Cortana UI确实是这样的,但我并没有能够在我的应用中重新创建该行为。我找到了在TextBox获取焦点时手动调整UI容器的大小的解决方案,但这需要估计键盘大小,这可以通过不同的屏幕分辨率更改,并且在内容返回之前也产生短动画。那么,当键盘幻灯片幻灯片中时,如何防止我的页面内容滚动滚动?

有帮助吗?

解决方案

没有一个非常好的方法来做这件事。 Cortana是系统UI和任何现有的应用空间。对于您的应用,假设应用程序中的任何UI都是整个应用程序的一部分。对于软件键盘显示的输入,将滚动应用程序内容以查看以确保上下文不会丢失。这是您无法真正更改的默认行为。

您确实可以访问键盘区域显示/隐藏( windows.ui.viewmanagement.Inputpane.InputPaneShowing [隐藏] )并且可以知道封闭的矩形将是什么。使用此事件,您可能能够在那里做一些事情,只要您的UI是主要视觉树的一部分,您的应用程序仍将滚动。

可以尝试的一件事是将该文本区域放在一个弹出层中,该区域是 not 主应用程序UI的一部分(这意味着它不透视到任何可视树)。未透明的弹出窗口不会参与主UI滚动行为。如果您这样做,请随时聆听输入窗格显示/隐藏您可能能够实现您想要的内容。

其他提示

没有超级清洁的方式来做这件事,但还有解决方法仍然在Silverlight工作。当键盘打开时,它将在rootApplicationFrame上设置一个数字式。因此,当您将焦点放在元素上时,请订阅页面的Layoutupdates,然后检查变换值。

在此处查看详细信息/代码:如何确定键盘偏移

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top