在我的一个WinRT应用程序视图中,我希望BottomAppBar
失去焦点时显示TextBox
。我使用了GotFocus
和LostFocus
个事件,我可以相应地手动更改IsOpen
的{{1}}属性。
问题是,当BottomAppBar
打开时,如果用户点击BottomAppBar
,则TextBox
已关闭(标准AppBar行为),但BottomAppBar
是没有集中注意力(即使用户点击了它)。用户需要再次关注TextBox
才能再次输入内容。
如果我在TextBox
Closed
的{{1}}事件中尝试以编程方式将焦点设置为BottomAppBar
,它很快会变得专注,但会立即失去焦点,相反,它的ScrollViewer会得到关注。
知道为什么TextBox
第二次失去焦点?
知道如何做我想做的事吗?
谢谢!
答案 0 :(得分:3)
当您点按BottomAppBar
并ScrollViewer
并将焦点设置为TextBox
时,您的ScrollViewer
会被焦点设置为{{1}就在那之后。如果您只想将焦点放在TextBox
上,则可以从ScrollViewer
禁用焦点。您也可以尝试在延迟后设置焦点(使用await Task.Delay(50);
或使用await Dispatcher.RunAsync(() => /*set focus)
,以便在ScrollViewer
获得焦点或处理GotFocus
之后设置焦点。 {1}}并在您希望焦点保持焦点时将焦点设置回ScrollViewer
。最后确保TextBox
可以获得焦点。