WPF 和初始焦点

标签 wpf focus

似乎当 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/

相关文章:

c# - focusable 如何影响鼠标事件的引发和处理?

Java Swing : How to prevent JOptionPane. showConfirmDialog() 聚焦?

javascript - 关注输入 angularjs 不工作

wpf - 我该如何让那个该死的 wpf 弹出窗口消失?

c# - HttpClient c# - 在 SendASync 处取消了任务

wpf - 当输入错误时如何显示MessageBox,以及如何在WPF中使用MVVM还原TextBox的旧值

c# - 如何使用 WPF 一次选择和更改多个控件的值?

wpf - 无法在没有装饰者的元素上访问装饰者

javascript - 是否可以防止隐藏的元素跳入焦点 View

java - JLayeredPane。动态改变JPanel的图层索引