天天看點

WPF UserControl響應窗體的PreviewKeyDown事件

目的

在UserControl頁面實作通過快捷鍵打開建立視窗

實作過程

監聽Window窗體的PreviewKeyDown

其實,使用KeyDown事件也是可以的

頁面代碼

<Window x:Class="WpfApp2.MainWindow" PreviewKeyDown="Window_PreviewKeyDown" ......>

後置頁代碼

private void Window_PreviewKeyDown(object sender, KeyEventArgs e)

{

if (this.ShowContent.Content is BaseUserControl control) control.ListenWindowKeyDown(e);

}

UserControl基類

BaseUserControl繼承自UserControl,定義了虛方法,以便重寫

public virtual void ListenWindowKeyDown(KeyEventArgs e)

{

//如果需要使用事件,需要重寫,此處不做任何處理

}

UserControl調用 KeyDown

// 監聽視窗KeyDown事件

public override void ListenWindowKeyDown(KeyEventArgs e)

{

//DEMO

if (Keyboard.IsKeyDown(Key.LeftAlt) && Keyboard.IsKeyDown(Key.N)) { //TODO }

}

到此完成,具體的快捷鍵觸發就不寫了

參考

https://blog.csdn.net/BYH371256/article/details/89394198

WPFの三種方式實作快捷鍵

https://www.cnblogs.com/lonelyxmas/p/9941791.html

WPF UserControl響應PreviewKeyDown事件方法

轉載于:https://www.cnblogs.com/xcsn/p/10768903.html

c#