UWP:软键盘不会将聚焦的文本框(嵌套在 FlipView 中)滚动到视图中

UWP: Soft Keyboard doesn't scroll focused TextBox (nested in a FlipView) into View

我认为获得

非常标准

'scroll the focused TextBox into view when soft keyboard appears'

但是我花越多的时间来解决这个问题,就越有被零除的感觉。

我写了一个带有 flipview 的应用程序,里面装满了以编程方式创建的页面。

我的应用程序首先使用 ViewModel,因此 Xaml-View 是通过 DataTemplateSelector 从 ResourceDictionary 加载的。

MainPage(xaml 页面 - 不是来自 ResourceDictionary)底部的文本框有效。

一旦页面来自 DataTemplateSelector(因此必然来自 ResourceDictionary),它就不会按预期运行。

顺便说一句:我决定使用 ResourceDictionary,因为在我看来,从 xaml 页面获取 DataTemplate 是不可能的。如果有人知道这样做的方法,请告诉我:)

这是我的示例项目: https://drive.google.com/file/d/0BzDVtvE9NKaMd2dBMWMzTWJtN1E/view?usp=sharing

提前谢谢大家

此致 亚历克斯

我通过将 FlipView 的 ItemsPanel 更改为水平滚动的 StackPanel 解决了这个问题。默认情况下正在使用 VirtualizingStackPanel。

我的方法是这样的:

private ItemsPanelTemplate GetItemsPanelTemplate() {
            string xaml = "<ItemsPanelTemplate xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'><StackPanel Orientation='Horizontal' AreScrollSnapPointsRegular='True' /></ItemsPanelTemplate>";
            return XamlReader.Load(xaml) as ItemsPanelTemplate;
        }

我这样调用这个方法:

Flip.ItemsPanel = GetItemsPanelTemplate();

这里要感谢feO2x(https://whosebug.com/users/1560623/feo2x) for his entry in his blog (http://www.feo2x.com/posts/2015-12-06-flipview-and-problems-with-input-controls-part-1/)

但请注意: 根据 feO2x 的博文,VirtualizingStackPanel 使用一种延迟加载,但现在使用的(标准)StackPanel 没有。 所以它可能会更慢。

我希望这可能对某人有所帮助。