【问题标题】:using wpf how to enable "enter" key press for a button placed inside a popup使用 wpf 如何为弹出窗口内的按钮启用“输入”按键
【发布时间】:2012-12-30 17:13:52
【问题描述】:

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

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

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

我应该如何为弹出窗口中的按钮启用此功能?

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

【问题讨论】:

    标签: wpf button popup wpf-controls enter


    【解决方案1】:

    您需要先将焦点设置在您的 Popup 上,以便它可以响应 Enter

    WPF 中有两种类型的焦点:键盘和逻辑。您可以拥有多个具有逻辑焦点的对象,前提是它们位于不同的焦点范围内(例如,您可以将一个元素集中在 Window 中,将另一个元素集中在 Popup 中),但只有一个对象可以拥有键盘焦点。

    要在弹出窗口中设置焦点,我通常只使用Loaded 事件,该事件会在弹出窗口可见并加载时执行。

    MyTextBox.Focus();         // Set Logical Focus
    Keyboard.Focus(MyTextBox); // Set Keyboard Focus
    

    编辑

    有时,如果您的应用程序中的其他东西在Loaded 事件之后立即窃取焦点,您可以使用Dispatcher 在稍后的DispatcherPriority 处运行您的焦点代码,例如Input

    Dispatcher.BeginInvoke(DispatcherPriority.Input,
        new Action(delegate() { 
            MyTextBox.Focus();         // Set Logical Focus
            Keyboard.Focus(MyTextBox); // Set Keyboard Focus
         }));
    

    【讨论】:

    • 嗨,瑞秋,谢谢您的回答。明天会试试这个,我确定它会起作用。我是 WPF 的新手,但我确信可能还有其他方法可以做到这一点,正如我所说,我有没有文本框的弹出窗口,所以不想添加不必要的隐藏专门为此目的的文本框。如果您也分享其他方式,我会很高兴:)
    • @SohailAnwerFaruqui 如果弹出窗口上没有TextBox,您可以将焦点设置为Button
    • Thanx Rachel,我认为我的项目存在一些问题,无法将焦点设置在我想要的位置。我在一个具有相同布局的虚拟项目上测试了这些键盘和逻辑焦点,它确实有效。
    • @SohailAnwerFaruqui 您能否编辑您的问题以包含您的虚拟项目的代码,以便我们重现该问题?
    • 嗨,Rachel,这个虚拟项目有简单的控件,并且焦点在它们上运行良好。它有一个文本框和一个按钮,按下它会打开一个弹出窗口,其中又有一个文本框和按钮,两者都有设置为默认按钮的按钮和弹出窗口内的文本框一旦使用键盘焦点打开弹出窗口就会获得焦点。(尽管逻辑焦点也有效)。感谢您宝贵的时间和指导。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-30
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    相关资源
    最近更新 更多