为什么ContentDialog中的TextBox不会自动滚动到键盘

时间:2015-07-03 15:20:15

标签: windows windows-phone-8.1

我注意到如果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中的那样?

1 个答案:

答案 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__))

                  ^