似乎当WPF应用程序启动时,没有任何焦点.
这真的很奇怪.我使用的每个其他框架都符合您的期望:将初始焦点放在Tab键顺序中的第一个控件上.但我已经确认它是WPF,而不仅仅是我的应用程序 - 如果我创建一个新窗口,只是在其中放置一个TextBox,并运行应用程序,TextBox没有焦点,直到我点击它或按Tab键.呸.
我的实际应用程序比TextBox更复杂.我在UserControls中有几层UserControl.其中一个UserControls有Focusable ="True"和KeyDown/KeyUp处理程序,我希望它在我的窗口打开后立即获得焦点.不过,我仍然是一个WPF新手,而且我没有太多运气搞清楚如何做到这一点.
如果我启动我的应用程序并按Tab键,则焦点转到我的可聚焦控件,它开始以我想要的方式工作.但我不希望我的用户在开始使用窗口之前必须点击Tab.
我已经使用了FocusManager.FocusedElement,但是我不确定将它设置为哪个控件(顶级窗口?包含可聚焦控件的父级?可聚焦控件本身?)或者设置它的内容.
在窗口打开后,我需要做什么才能使我的深层嵌套控件具有初始焦点?或者更好的是,将第一个可聚焦控件聚焦在Tab键顺序中?
我有一个Universal Windows平台项目,它有一个textBox元素.
单击单选按钮时,我想将焦点设置为它.
在单选按钮单击事件中,我可以说:
txtBoxID.IsEnabled = true;
txtBoxID.Text = "";
Run Code Online (Sandbox Code Playgroud)
但是我该如何设定焦点呢?我看到一些答案说使用:
FocusManager.SetFocusedElement(
Run Code Online (Sandbox Code Playgroud)
但是我的FocusManager类没有那个方法.
编辑:解决了,谢谢.只需要知道传递给SetFocus的参数.被认为是相似的另一个人的问题是关于他将注意力集中在他的控制之后发生的事件.
我有一个有趣的情况,我使用以下方法将焦点设置在搜索框上:FocusManager.FocusedElement="{Binding ElementName=SearchBox}"我在此处找到:将焦点设置在 xaml wpf 中的文本框上
好消息是搜索框实际上是聚焦的(我有一个触发器可以对焦点执行操作),但是在单击文本框之前我无法在文本框中键入内容。
我的文本框非常基本:
<TextBox x:Name="SearchBox"
Grid.Row="0"
style="{StaticResource SearchBox}" />
Run Code Online (Sandbox Code Playgroud)
知道如何让用户在打开控件时立即输入吗?