防止WPF捕获F5以便我可以将其用于我自己的目的?

问题描述 投票:0回答:1

我想要为我的应用程序提供一个刷新热键,对于大多数程序来说,“刷新”的标准键是 F5。所以我也想在我的程序中使用该热键。问题在于WPF使用F5刷新Frame。

我设法在框架的用户控件的代码隐藏中关闭框架上的刷新:

    private void pageFrame_Navigating(object sender, System.Windows.Navigation.NavigatingCancelEventArgs e)
    {
        if (e.NavigationMode == NavigationMode.Refresh)
        {
            e.Cancel = true;
        }
    }

但是,这仍然“捕获”按键,因此我无法在程序中的其他位置检测到它。它使按键无效,就好像它从未发生过一样。当我按F5并且同时在其他地方使用F5时,如何阻止Frame刷新?

我检测按键:

    public static void KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
    {
        switch (e.Key)
        {
            case Key.F6: //Send Group
                //THIS HERE WORKS!
                break;
            case Key.F5: //Refresh Group
                //THIS HERE DOES NOT WORK!
            break;
        }
    }

该函数订阅主窗口的“KeyDown”事件。

wpf refresh hotkeys f5
1个回答
0
投票

对于任何发现此页面有相同问题的人。我通过使用 ContentControl 而不是 FrameUserControl 而不是 Page 来修复它。

我只是因为框架和页面的名字而使用了它们,所以我认为这就是你应该做的。但是使用 ContentControl 和 UserControl 可以给你更多的自由,并且没有任何 Frame/Page 可以做的 ContentControl/UserControl 不能通过编程来做的事情。

https://social.technet.microsoft.com/wiki/contents/articles/52485.wpf-tips-and-tricks-using-contentcontrol-instead-of-frame-and-page-for-navigation.aspx

© www.soinside.com 2019 - 2024. All rights reserved.