2016-08-08 10 views
-1

'mainFrame'、 'sidepanel'、 'mainWindow'の2つのフレームを持つ 'mainWindow'という名前のウィンドウがあり、 'sidepanel'から 'btn1'をクリックすると 'mainFrame' 'frame1'はページです。 'frame1'では、私は唯一の子としてボーダーコントロールを持っています。初期化時にSystem.NullReferenceExceptionが発生しました

mainWindow.xaml.cs:

((mainWindow)App.Current.MainWindow).mainFrame.Navigate(new frame1()); 

frame1.xaml:

<Border> 
</Border> 

frame1.xaml.cs:

public frame1() 
{ 
    InitializeComponent(); 
    var page = ((mainWindow)App.Current.MainWindow).mainFrame.Content as Page; 
    var border = page.Content as Border; 
} 

私は "System.NullReferenceException" を抱えていますborderをpage.Content = nullとして初期化するとき。しかし、2回目に 'btn1'をクリックすると、 'System.Windows.Controls.Border'で初期化されます。しかし、私が最初に 'btn1'をクリックすると、この結果が欲しいです。

良い解決策を教えてください。

frame1.xaml.cs:@KooKizが示唆したように

+0

それが直接問題に関連していません'(mainWindow)App.Current.MainWindow)ではありません.mainFrame.Content'は' frame1'ですか?自分自身で痛みを取り除き、直接 'this.Content'を呼び出してください –

+2

問題自体については、ページライフサイクルの早い時期にコンテンツにアクセスしようとしている可能性があります。 'Loaded'イベントの中でコードを動かしてみてください –

答えて

0

は、この1は私に解決策を与えた

private void Page_Loaded(object sender, RoutedEventArgs e) 
{ 
    var page = ((mainWindow)App.Current.MainWindow).mainFrame.Content as Page; 
    var border = page.Content as Border; 
} 

frame1.xaml:

<Page Loaded="Page_Loaded"> 
    <Border></Border> 
</Page> 
+0

申し訳ありませんが、... 'var border = this.Content as Border;' –

関連する問題