似乎当 WPF 应用程序启动时,没有任何东西具有焦点。
这确实很奇怪。我使用过的所有其他框架都符合您的期望:将初始焦点放在 Tab 键顺序中的第一个控件上。但我已经确认它是 WPF,而不仅仅是我的应用程序 - 如果我创建一个新窗口,然后在其中放入一个 TextBox,然后运行该应用程序,则在单击它或按 Tab 之前,TextBox 不会获得焦点。恶心。
我的实际应用程序比文本框更复杂。我在 UserControls 中有几层 UserControls。其中一个 UserControls 具有 Focusable="True"和 KeyDown/KeyUp 处理程序,我希望它在我的窗口打开时立即获得焦点。不过,我在某种程度上仍然是 WPF 新手,而且我不太幸运地弄清楚如何做到这一点。
如果我启动我的应用程序并按 Tab 键,那么焦点将转到我的可聚焦控件,并且它开始按照我想要的方式工作。但我不希望我的用户必须先按 Tab 键才能开始使用该窗口。
我已经尝试过 FocusManager.FocusedElement,但我不确定将其设置在哪个控件上(顶级窗口?包含可聚焦控件的父级?可聚焦控件本身?)或设置什么它到。
我需要做什么才能让我的深层嵌套控件在窗口打开时立即获得初始焦点?或者更好的是,将第一个可聚焦控件置于 Tab 键顺序中?
最佳答案
这也有效:
<Window FocusManager.FocusedElement="{Binding ElementName=SomeElement}">
<DataGrid x:Name="SomeElement">
...
</DataGrid>
</Window>
关于WPF 和初始焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/817610/