Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 初始化时System.NullReferenceException异常_C#_Wpf_Xaml_Navigation - Fatal编程技术网

C# 初始化时System.NullReferenceException异常

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”的窗口,其中有两个框架名为“mainFrame”,“sidepanel”和“mainWindow”,当我从“sidepanel”中单击“btn1”时,“mainFrame”被导航到“frame1”,这是一个页面。在“frame1”中,我有一个作为独生子的边界控件

mainWindow.xaml.cs:

((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作为边框