Windows 8 移除第一个文本框上的焦点

Windows 8 移除第一个文本框上的焦点,windows-8,textbox,windows-store-apps,Windows 8,Textbox,Windows Store Apps,在我们的Windows应用商店应用程序中,我们有一个文本框,当应用程序启动时,该文本框始终获得焦点。在桌面场景中,这没有问题,但在平板设备上,此焦点将直接打开屏幕键盘,这不是我们想要的场景 我们试图用.focus(FocusState)方法将焦点设置在另一个控件上,但不知何故,焦点被设置回了文本框。我们都在LoadState或OnNavigatedTo方法中设置了焦点 只有当我们有定时器时,我们才成功地将焦点设置到另一个控件。任何人都知道如何将焦点设置到另一个控件,或者最好不要将焦点设置到某个控

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

我们试图用.focus(FocusState)方法将焦点设置在另一个控件上,但不知何故,焦点被设置回了文本框。我们都在LoadState或OnNavigatedTo方法中设置了焦点


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

通常,您可以通过
TextBox.focus()
在任何元素上设置焦点。但是,当您将文本框放置在ScrollViewer或弹出型按钮中时,我发现了相同的行为(开始时自动聚焦)。然后,必须在父元素上设置:

<ScrollViewer IsTabStop="true">
   <TextBox />
</ScrollViewer>

IsTabStop=“true”对我不起作用。我的解决方案是在文本框上设置焦点之前调用scrollViewer的UpdateLayout():

scrollViewer.UpdateLayout()


textBox.Focus(Windows.UI.Xaml.FocusState.prographic)

如果您不喜欢使用
ScrollViewer
接受答案,您也可以这样做来移除焦点:

_textBox.IsReadOnly = true;
_textBox.IsReadOnly = false;

这不是确切的答案,因为我的文本框不在scrollviewer或弹出框中。尽管我通过在文本框之前添加一个带有IsTabStop=true的scrollview并将水平和垂直滚动条可见性设置为折叠来修复它。这肯定不是最完美的解决方案,但在我发现原因之前,它是有效的!谢谢IsTabStop是一个控件属性。所以你可以在任何控件上设置它。也许你只是试着在你当前的父元素上设置它(不管它是什么)。它是一个在LayoutWarePage中的网格。网格没有IsTabStop。LayoutWarePage有,但这并不能解决它。