我遇到了一个问题,虽然它可能有一个简单的解决方案,但无法找到它。
我有一个页面(比如mainPage),其中有几个按钮,我在其上启用“Enter”键按下一个按钮(比如提交),通过在xaml中为该按钮设置IsDefault =“true”,它工作正常
单击主页上的其他按钮将打开一个弹出窗口,其中包含2个按钮“是”和“否”。按Enter键时,设置IsDefault =“true”属性为“Yes”将不起作用。 (有关信息,它也不适用于提交按钮,这也不是问题,我认为我也有solution
如何在弹出窗口中为按钮启用此功能?
(有关更多信息,我们有一个按钮,用于创建一个弹出窗口,其中包含按钮和文本框。在该情况下,弹出窗口中的按钮设置IsEnable =“true”将为按钮完成工作,但仅当我们点击时文本框。 我在观察此行为后尝试将焦点设置在文本框上,因此它可能会有所帮助,但将焦点设置在文本框上不起作用。用于将焦点设置在文本框上,如下所示: Focusable =“True”FocusManager.FocusedElement =“{Binding ElementName = textboxName}”)
答案 0 :(得分:2)
您需要首先关注Popup
,以便它可以回复Enter
键
WPF中有两种类型的Focus:键盘和逻辑。您可以拥有多个具有逻辑焦点的对象,前提是它们位于不同的焦点范围内(例如,您可以在窗口中聚焦一个元素,在弹出窗口中聚焦另一个元素),但只有一个对象可以使用键盘焦点。
要在Popup中设置焦点,我通常只使用Loaded
事件,该事件会在Popup变为可见并加载时执行。
MyTextBox.Focus(); // Set Logical Focus
Keyboard.Focus(MyTextBox); // Set Keyboard Focus
修改强>
有时,如果您的应用中的其他内容在Loaded
事件发生后立即窃取焦点,您可以使用Dispatcher
在稍后DispatcherPriority处运行您的焦点代码,例如{{ 1}}
Input