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 没有。
所以它可能会更慢。
我希望这可能对某人有所帮助。
我认为获得
非常标准'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 没有。 所以它可能会更慢。
我希望这可能对某人有所帮助。