看起来在WPF应用程序启动时,没有任何控件获得了焦点。
这真的很奇怪。我使用过的每个其他框架都会按照你期望的那样:将初始焦点放在选项卡顺序中的第一个控件上。但我已经确认了它是WPF的问题,而不仅仅是我的应用程序——如果我创建一个新窗口,并在其中只放置一个TextBox,然后运行该应用程序,TextBox在我单击它或按Tab之前并没有焦点。糟糕。
我的实际应用程序比一个TextBox更复杂。我有多个层次的UserControl嵌套在UserControl中。其中一个UserControl具有Focusable = "True"和KeyDown/KeyUp处理程序,并且我希望它在我的窗口打开时立即拥有焦点。尽管我还是WPF新手,但我一直试图弄清楚如何做到这一点,但并没有取得太大成功。
如果我启动我的应用程序并按Tab键,则焦点将转移到我的可获取焦点的控件,然后它开始按照我希望的方式工作。但是我不希望用户必须在使用窗口之前按Tab键。
我已经尝试过使用FocusManager.FocusedElement,但我不确定要设置哪个控件(顶层Window?包含可获取焦点控件的父项?可获取焦点控件本身?)或者应该将其设置为什么。
我需要做什么才能使我的深度嵌套控件在窗口打开时立即获得焦点?或更好的是,将焦点放在选项卡顺序中的第一个可获取焦点的控件上?