使用wpf如何启用“输入”键按下弹出窗口内的按钮

时间:2013-01-16 11:36:08

标签: wpf button popup wpf-controls enter

我遇到了一个问题,虽然它可能有一个简单的解决方案,但无法找到它。

我有一个页面(比如mainPage),其中有几个按钮,我在其上启用“Enter”键按下一个按钮(比如提交),通过在xaml中为该按钮设置IsDefault =“true”,它工作正常

单击主页上的其他按钮将打开一个弹出窗口,其中包含2个按钮“是”和“否”。按Enter键时,设置IsDefault =“true”属性为“Yes”将不起作用。 (有关信息,它也不适用于提交按钮,这也不是问题,我认为我也有solution

如何在弹出窗口中为按钮启用此功能?

(有关更多信息,我们有一个按钮,用于创建一个弹出窗口,其中包含按钮和文本框。在该情况下,弹出窗口中的按钮设置IsEnable =“true”将为按钮完成工作,但仅当我们点击时文本框。 我在观察此行为后尝试将焦点设置在文本框上,因此它可能会有所帮助,但将焦点设置在文本框上不起作用。用于将焦点设置在文本框上,如下所示: Focusable =“True”FocusManager.FocusedElement =“{Binding ElementName = textboxName}”)

1 个答案:

答案 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