我想要为我的应用程序提供一个刷新热键,对于大多数程序来说,“刷新”的标准键是 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”事件。
对于任何发现此页面有相同问题的人。我通过使用 ContentControl 而不是 Frame 和 UserControl 而不是 Page 来修复它。
我只是因为框架和页面的名字而使用了它们,所以我认为这就是你应该做的。但是使用 ContentControl 和 UserControl 可以给你更多的自由,并且没有任何 Frame/Page 可以做的 ContentControl/UserControl 不能通过编程来做的事情。