8

在我们的 Windows Store 应用程序中,我们有一个文本框,当应用程序启动时,这个文本框总是获得焦点。在桌面场景下没问题,但是在平板设备上这个焦点会直接打开屏幕键盘,这不是我们想要的场景。

我们尝试使用 .Focus(FocusState) 方法将焦点设置在另一个编程控件上,但不知何故,焦点又回到了文本框。我们都在 LoadState 或 OnNavigatedTo 方法中设置了焦点。

只有当我们有计时器时,我们才能成功地将焦点设置到另一个控件。任何人都知道如何将焦点设置到另一个控件,或者最好根本不将焦点设置到控件?

4

3 回答 3

16

通常,您可以通过 将焦点设置在任何元素上TextBox.Focus()。但是,当您将 TextBox 放在 ScrollViewer 或 FlyOut 中时,我发现了相同的行为(开始时自动对焦)。然后你必须在父元素上设置IsTabStop :

<ScrollViewer IsTabStop="true">
   <TextBox />
</ScrollViewer>
于 2013-08-08T11:47:38.483 回答
0

IsTabStop="true" 对我不起作用。我的解决方案是在将焦点设置在 TextBox 上之前调用 scrollViewer 的 UpdateLayout():

scrollViewer.UpdateLayout();

textBox.Focus(Windows.UI.Xaml.FocusState.Programmatic);

于 2014-06-18T09:08:25.423 回答
0

如果您不喜欢接受的答案,ScrollViewer您也可以这样做以消除焦点:

_textBox.IsReadOnly = true;
_textBox.IsReadOnly = false;
于 2016-02-26T10:55:55.260 回答