C# 初始化时System.NullReferenceException异常
我有一个名为“mainWindow”的窗口,其中有两个框架名为“mainFrame”,“sidepanel”和“mainWindow”,当我从“sidepanel”中单击“btn1”时,“mainFrame”被导航到“frame1”,这是一个页面。在“frame1”中,我有一个作为独生子的边界控件 mainWindow.xaml.cs:C# 初始化时System.NullReferenceException异常,c#,wpf,xaml,navigation,C#,Wpf,Xaml,Navigation,我有一个名为“mainWindow”的窗口,其中有两个框架名为“mainFrame”,“sidepanel”和“mainWindow”,当我从“sidepanel”中单击“btn1”时,“mainFrame”被导航到“frame1”,这是一个页面。在“frame1”中,我有一个作为独生子的边界控件 mainWindow.xaml.cs: ((mainWindow)App.Current.MainWindow).mainFrame.Navigate(new frame1()); frame1.x
((mainWindow)App.Current.MainWindow).mainFrame.Navigate(new frame1());
frame1.xaml:
<Border>
</Border>
<Page Loaded="Page_Loaded">
<Border></Border>
</Page>
当将边框初始化为page.Content=null时,我遇到了“System.NullReferenceException”。但如果我第二次单击“btn1”,它将被初始化为“System.Windows.Controls.Border”。但是当我第一次点击“btn1”时,我想要这个结果
请帮我找到一个好的解决方案。正如@KooKiz所建议的,这一个给了我解决方案: frame1.xaml.cs:
public frame1()
{
InitializeComponent();
var page = ((mainWindow)App.Current.MainWindow).mainFrame.Content as Page;
var border = page.Content as Border;
}
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:
<Border>
</Border>
<Page Loaded="Page_Loaded">
<Border></Border>
</Page>
它与问题没有直接关系,但不是((mainWindow)App.Current.mainWindow)。mainFrame.Content
应该是frame1
?省去你自己的痛苦,直接调用this.Content
至于问题本身,很可能是你试图在页面生命周期的早期访问内容。请尝试将您的代码移动到已加载的事件中。抱歉,坚持要这样做,但是var border=this.Content作为边框代码>