我正在开发一个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
。但是,我无法在HomePage.xaml.cs
NavigationWindow
内找到该功能,所以我提出了一个想法。
var window = Window.GetWindow(this);
((MainWindow) window).KeyUp += new system.Windows.Input.KeyEventHandler(this.Window_KeyUp);
但是,这不起作用并抛出System.NullReferenceException
。我不知道为什么会这样。也许它想在这里说this
是null
?但为什么呢?
答案 0 :(得分:0)
虽然很傻,但我想自己回答这个问题。 (顺便说一句,我还没有收到很多让我感到不安的答案。幸运的是我发现了问题)
问题在于Window.GetWindow(this)
。它返回null
,显然没有KeyUp
事件。解决方案是将其更改为Application.Current.Windows
,这是一个Windows层次结构数组。因此Application.Current.Windows[0]
可以返回MainWindow
对象,该对象可以与处理程序一起附加。