[英]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
。 我不知道為什么會這樣。 也許它想說this
是null
的? 但為什么?
雖然很傻,但我想親自回答這個問題。 (順便說一句,我還沒有收到很多讓我感到不安的答案。幸運的是我發現了問題)
問題是關於Window.GetWindow(this)
。 它返回null
,它顯然沒有KeyUp
事件。 解決方案是將其更改為Application.Current.Windows
,它是Windows層次結構的數組。 因此Application.Current.Windows[0]
可以返回MainWindow
對象,該對象可以與處理程序一起附加。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.