'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が示唆したように
それが直接問題に関連していません'(mainWindow)App.Current.MainWindow)ではありません.mainFrame.Content'は' frame1'ですか?自分自身で痛みを取り除き、直接 'this.Content'を呼び出してください –
問題自体については、ページライフサイクルの早い時期にコンテンツにアクセスしようとしている可能性があります。 'Loaded'イベントの中でコードを動かしてみてください –