WinRT,TextBox的重点,奇怪的行为

时间:2013-02-20 22:43:37

标签: c# xaml textbox windows-runtime focus

在我的一个WinRT应用程序视图中,我希望BottomAppBar失去焦点时显示TextBox。我使用了GotFocusLostFocus个事件,我可以相应地手动更改IsOpen的{​​{1}}属性。

问题是,当BottomAppBar打开时,如果用户点击BottomAppBar,则TextBox已关闭(标准AppBar行为),但BottomAppBar是没有集中注意力(即使用户点击了它)。用户需要再次关注TextBox才能再次输入内容。

如果我在TextBox Closed的{​​{1}}事件中尝试以编程方式将焦点设置为BottomAppBar,它很快会变得专注,但会立即失去焦点,相反,它的ScrollViewer会得到关注。

知道为什么TextBox第二次失去焦点? 知道如何做我想做的事吗?

谢谢!

1 个答案:

答案 0 :(得分:3)

当您点按BottomAppBarScrollViewer并将焦点设置为TextBox时,您的ScrollViewer会被焦点设置为{{1}就在那之后。如果您只想将焦点放在TextBox上,则可以从ScrollViewer禁用焦点。您也可以尝试在延迟后设置焦点(使用await Task.Delay(50);或使用await Dispatcher.RunAsync(() => /*set focus),以便在ScrollViewer获得焦点或处理GotFocus之后设置焦点。 {1}}并在您希望焦点保持焦点时将焦点设置回ScrollViewer。最后确保TextBox可以获得焦点。