在我们的Windows应用商店应用中,我们有一个文本框,当应用程序启动时,此文本框始终会获得焦点。在桌面方案中没有问题,但在平板电脑设备上,此焦点将直接打开屏幕键盘,这不是我们想要的场景。
我们尝试使用.Focus(FocusState)方法将焦点设置在另一个控制程序上,但不知何故焦点被设置回文本框。我们都将焦点设置在LoadState或OnNavigatedTo方法中。
只有当我们有计时器时,我们才能将焦点设置成另一个控件。任何人都有想法如何将焦点设置为另一个控件,或者最好不设置焦点到控件?
答案 0 :(得分:16)
通常,您可以按TextBox.Focus()
设置任何元素的焦点。但是,当您将TextBox放在ScrollViewer或FlyOut中时,我发现了相同的行为(启动时自动对焦)。然后你必须在父元素上设置IsTabStop:
<ScrollViewer IsTabStop="true">
<TextBox />
</ScrollViewer>
答案 1 :(得分:0)
IsTabStop =“true”对我不起作用。我的解决方案是在将焦点设置在TextBox上之前调用scrollViewer的UpdateLayout():
scrollViewer.UpdateLayout();
textBox.Focus(Windows.UI.Xaml.FocusState.Programmatic);
答案 2 :(得分:0)
如果你不喜欢ScrollViewer
的接受答案,你也可以这样做以消除焦点:
_textBox.IsReadOnly = true;
_textBox.IsReadOnly = false;