2016-09-17 17 views
0

私はWPFプロジェクトで作業しており、初めてです。C#WPF別のページにハンドラがあるウィンドウのKeyUpイベントを追加

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

事は、私は私のプログラムにKeyUpイベントを追加したいということであり、私はキーが押されたとき、それはHomePage.xaml.csで関数を呼び出したい:私はこのように私のプロジェクトを整理します。しかしPageオブジェクトにKeyUpイベントを追加することは不可能であることが分かりましたので、NavigationWindowに追加することにしました。しかし、私はHomePage.xaml.csNavigationWindow内の機能に到達することができないので、私は考えを思い付いた。

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

しかし、これはうまく動作せず、System.NullReferenceExceptionを投げます。私はなぜそれが起こるのか分からない。たぶんthisはここにnullと言っていますか?しかし、なぜ?

+0

'Page'ではなく' UserControl'を使います。 (可能であれば) – DeMama

+0

'UserControl'はまだ' KeyUp'イベントでアタッチできないと思います。また、 'Page'ではなく' UserControl'を使用してナビゲーションを行い、コンテンツを入れるのは従来通りですか? – Rundis

+0

私はあなたがMainWindowにdiffページを表示したいと思っています。そしてHomePageは最初のページですが、そのようなページがたくさんあるかもしれませんし、矢印キーを使ってそれらのページ間を移動したいのですか? – AnjumSKhan

答えて

0

愚かですが、私はこの質問に自分自身で答えたいと思います。 (私は幸いにも私は問題を見つけた)私は多くの答えを受け取っていない幸いにも私は問題を見つけた

問題は約Window.GetWindow(this)です。 nullを返します。明らかにKeyUpイベントはありません。解決方法は、ウィンドウ階層の配列であるApplication.Current.Windowsに変更することです。したがって、Application.Current.Windows[0]は、MainWindowオブジェクトを返すことができます。このオブジェクトはハンドラに添付できます。

関連する問題