我注意到如果TextBox
位于Page
,那么一切都运转良好。每当TextBox
聚焦时,它将滚动到键盘上方的正确位置,以便用户能够在键入时看到文本。无论出于何种原因,ContentDialog
都有点不同。键盘很容易覆盖TextBox
。我有什么明显的设置吗?
我创建了一个默认的ContentDialog
并将代码复制到了一个页面。并获取以下屏幕截图。其他所有内容都相同,只是左侧列的上级XAML元素为<ContentDialog>
,右列为<Page>
。
左键图像 - 键盘弹出前的ContentDialog
右键图像 - 键盘弹出前Page
左图 - ContentDialog
右键图像 - 键盘弹出后Page
以下是相关代码:
<StackPanel VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
<TextBox Name="email" Header="Email address"/>
<PasswordBox Name="password" Header="Password"/>
<CheckBox Name="showPassword" Content="Show password"/>
<!-- Content body -->
<TextBlock Name="body" Style="{StaticResource MessageDialogContentStyle}" TextWrapping="Wrap">
<TextBlock.Text>
Lorem ipsum dolor sit amet, consectetur adipisicing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
</TextBlock.Text>
</TextBlock>
</StackPanel>
为什么TextBox
内的ContentDialog
不在键盘上方滚动,就像Page
中的那样?
答案 0 :(得分:1)
一旦我遇到与 TextBox 类似的问题并找到了answer here。基本上,一旦显示键盘,聚焦元素不会向上移动,您可以通过进行额外的转换来纠正此行为:
./test.h:198:1: error: replacement function 'operator new' cannot be declared 'inline' [-Werror,-Winline-new-delete]
__forceinline void *operator new(size_t size) { return malloc(size); }
^
./test.h:18:23: note: expanded from macro '__forceinline'
#define __forceinline inline __attribute__((__always_inline__))
^