C# WPF win8平板电脑模式键盘隐藏屏幕底部的项目

C# WPF win8平板电脑模式键盘隐藏屏幕底部的项目,c#,wpf,.net-4.0,C#,Wpf,.net 4.0,我目前正在使用WPF和WIN8表格模式设计一些软件 有一些地方需要使用文本框输入一些数字 我用某种方式最终显示键盘: 但我发现,有时候键盘出现后会覆盖底部或中间的某个项目 例如:我在屏幕上有5个文本框 <Grid> <TextBox HorizontalAlignment="Left" Margin="500,95,0,0" Height="23" Width="120"/> <TextBox HorizontalAlignment="Left" Marg

我目前正在使用WPF和WIN8表格模式设计一些软件

有一些地方需要使用文本框输入一些数字

我用某种方式最终显示键盘:

但我发现,有时候键盘出现后会覆盖底部或中间的某个项目

例如:我在屏幕上有5个文本框

<Grid>
  <TextBox HorizontalAlignment="Left" Margin="500,95,0,0"  Height="23" Width="120"/>
  <TextBox HorizontalAlignment="Left" Margin="500,295,0,0"  Height="23" Width="120"/>
  <TextBox HorizontalAlignment="Left" Margin="500,495,0,0"  Height="23" Width="120"/>
  <TextBox HorizontalAlignment="Left" Margin="500,695,0,0"  Height="23" Width="120"/>
  <TextBox HorizontalAlignment="Left" Margin="500,800,0,0"  Height="23" Width="120"/>
</Grid>

但是现在我发现如果键盘聚焦在一些文本框上,而不是在顶部,可能在中间,也可能在底部。键盘将覆盖它我甚至看不到我正在输入的内容(如图所示)

那么有什么好办法来解决它吗?多谢各位

PS:我试图拖动键盘,但看起来这不是一个好的解决方案,
由于中间有一些文本框,键盘仍会覆盖中间的文本框。

用户可以移动键盘,使其不覆盖。最好让用户以这种方式处理这种情况,而不是尝试重新设计Windows体验

要做到这一点,您必须执行类似的操作

1) 您的视图必须可滚动(在scrollviewer中)

2) 通常情况下,textbox.BringIntoView()可以工作,但使用当前的解决方案。。这是不可能的,因为键盘显示在textbox.BringIntoView()之后调用

看到我的帖子了吗


它是显示/隐藏win 8键盘和文本框对焦时自动对焦的完整实现,您保留了使用inkDisableHelper时丢失的所有wpf touch功能。虚拟键盘应该在显示键盘时自动将对焦的文本框移动到视图中。Microsoft说此行为是自动的,但可以使用
EnsureredFocusedElementInview
()

我认为这可以通过调整Y过渡来解决

     _offSet = 0;

        Windows.UI.ViewManagement.InputPane.GetForCurrentView().Showing += (s, args) =>
        {
            _offSet = (int)args.OccludedRect.Height;
            args.EnsuredFocusedElementInView = true;
            var trans = new TranslateTransform();
            trans.Y = -_offSet;
            this.RenderTransform = trans;
        };

        Windows.UI.ViewManagement.InputPane.GetForCurrentView().Hiding += (s, args) =>
        {
            var trans = new TranslateTransform();
            trans.Y = 0;
            this.RenderTransform = trans;
            args.EnsuredFocusedElementInView = false;
        };
在构造函数内部

你也可以看看

(一)


2)

正如我在问题底部所说,即使移动键盘,它仍然会覆盖中间的文本框。你必须重新设计布局。你怎么能期望键盘不覆盖某些东西呢?但是怎么做到呢?你能至少给我一些代码示例吗?谢谢。当用户输入文本框时,他们将看到键盘。键盘显示的位置取决于用户。你不能肯定它会在哪里。这是窗户的设计。你到底希望这里有什么?您希望显示键盘,但不希望它覆盖任何文本框,这些文本框分散在整个屏幕高度上。你怎么能有东西遮住屏幕,却不遮住屏幕呢?对我来说,我在想可能有点像Windows8的登录屏幕。当用户密码集中在登录密码文本框上后,键盘自动显示,并且文本框位置移动到更高的位置,然后我可以看到文本框和键盘在一起,这就是您登录win 8 Tablet时可以看到的。我认为这是唯一的好方法,但我不知道如何让所有的文本框都这样,因为底部的一些文本框,屏幕中间的一些文本框,都需要计算,另一个问题是键盘需要使用其他方式显示。WPF不支持某些API,如Win8平板电脑键盘。您的演示只让我们知道如何显示键盘,但不完全解决键盘隐藏文本框的问题。您好,qakmak,TextBox.BringIntoView()此元素应该能够显示文本框,但您的视图必须可滚动,否则键盘将隐藏文本框。您不是演示,我还是不确定。您可以看到:如果文本框位于底部,滚动查看器是否仍在工作?我不这么认为。嗨,键盘会自动调整你的软件的大小(减小它的大小),这样你的scrollviewer就会有更大的范围,这会让你的文本框显示出来。它在我的windows应用程序中运行良好。