UWP:软键盘不会将聚焦的TextBox(嵌套在FlipView中)滚动到View中

时间:2017-09-26 11:28:54

标签: uwp resourcedictionary soft-keyboard flipview datatemplateselector

我认为获得

是非常标准的
  

'当软键盘出现'

时,将聚焦的TextBox滚动到视图中

但是我花在解决这个问题上的时间越多,感觉就越划分为零。

我用翻转视图编写了一个应用程序,其中包含以编程方式创建的页面。

我的应用程序进入ViewModelFirst,因此Xaml-Views通过DataTemplateSelector从ResourceDictionary加载。

MainPage底部的TextBox(一个xaml页面 - 不是来自ResourceDictionary)可以工作。

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

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

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

提前谢谢大家

祝你好运 亚历

1 个答案:

答案 0 :(得分:1)

我通过将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://stackoverflow.com/users/1560623/feo2x)进入他的博客(http://www.feo2x.com/posts/2015-12-06-flipview-and-problems-with-input-controls-part-1/

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

我希望,这可能有助于某人。