Jas*_*n H 10 scrollviewer soft-keyboard windows-phone-7
我正在申请一份包含注册表格的申请表.表单包含多个文本输入框,因此ScrollViewer用于允许它们全部显示在一个页面上.
以下是我正在使用的XAML代码的精简示例:
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
<TextBlock x:Name="ApplicationTitle" Text="SCROLLVIEWER TEST" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock x:Name="PageTitle" Text="registration" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>
<ScrollViewer Grid.Row="1">
<StackPanel>
<TextBlock Text="Hello" Margin="12,0,0,0"/>
<TextBox />
<TextBlock Text="Hello1" Margin="12,0,0,0"/>
<TextBox />
<TextBlock Text="Hello2" Margin="12,0,0,0"/>
<TextBox />
<TextBlock Text="Hello3" Margin="12,0,0,0"/>
<TextBox />
<TextBlock Text="Hello4" Margin="12,0,0,0"/>
<TextBox />
<TextBlock Text="Hello5" Margin="12,0,0,0"/>
<TextBox />
<TextBlock Text="Hello6" Margin="12,0,0,0"/>
<TextBox />
<TextBlock Text="Hello7" Margin="12,0,0,0"/>
<TextBox />
<TextBlock Text="Hello8" Margin="12,0,0,0"/>
<TextBox />
<TextBlock Text="END" Margin="12,0,0,0"/>
<TextBox />
</StackPanel>
</ScrollViewer>
</Grid>
Run Code Online (Sandbox Code Playgroud)
(请注意,ScrollViewer位于网格单元格内,这意味着标题面板应始终保持OnScreen)
滚动工作完全正常,所以这不是问题.但是,当用户选择TextBox输入数据(即软键盘打开)时,系统会推送整个页面的内容(包括注册标题面板),这不是预期的行为.[请参阅Windows Phone上的People应用程序并尝试添加新联系人.这包含一个类似的结构,但ScrollViewer只通过向上滚动查看器中的内容来正常运行]
测试用例
要么
任何有关解决此问题的帮助将不胜感激.谢谢.
问题是 ScrollViwer 高度在键盘出现后没有修改,因此它被剪裁了。一种解决方案是修改滚动视图的高度(根据键盘高度),然后重新定位它(这可能会让您有些头痛)。
另一个问题是知道键盘何时出现 - 您可以在所有文本框上注册 GotFocus/LostFocus 事件,但这不是一个很好的解决方案。这可能对您有帮助:http://blogs.msdn.com/b/jaimer/archive/2010/11/05/guessing-if-the-sip-is-visible-in-a-windows-phone-application.aspx
希望这有所帮助 :)
| 归档时间: |
|
| 查看次数: |
1504 次 |
| 最近记录: |