簡體   English   中英

C#WPF為另一個頁面中的處理程序的窗口添加KeyUp事件

[英]C# WPF add KeyUp event for window with a handler in another page

我正在開發WPF項目,並且是我的新手。 我這樣組織我的項目:

MainWindow.xaml         (Contains a NavigationWindow)
  MainWindow.xaml.cs
HomePage.xaml           (Contains a series of function)
  Homepage.xaml.cs

問題是我想在程序中添加一個KeyUp事件,並且希望它在按下某個鍵時調用HomePage.xaml.cs一個函數。 但是我發現不可能將KeyUp事件添加到Page對象,因此我決定將其添加到NavigationWindow 但是,我無法在NavigationWindow中訪問HomePage.xaml.cs的函數,因此我想到了一個主意。

var window = Window.GetWindow(this);
((MainWindow) window).KeyUp += new system.Windows.Input.KeyEventHandler(this.Window_KeyUp);

但是,這不起作用並拋出System.NullReferenceException 我不知道為什么會這樣。 也許它想說thisnull的? 但為什么?

雖然很傻,但我想親自回答這個問題。 (順便說一句,我還沒有收到很多讓我感到不安的答案。幸運的是我發現了問題)

問題是關於Window.GetWindow(this) 它返回null ,它顯然沒有KeyUp事件。 解決方案是將其更改為Application.Current.Windows ,它是Windows層次結構的數組。 因此Application.Current.Windows[0]可以返回MainWindow對象,該對象可以與處理程序一起附加。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM