【发布时间】:2016-08-08 09:44:43
【问题描述】:
我有一个名为“mainWindow”的窗口,其中有两个名为“mainFrame”、“sidepanel”的框架,在“mainWindow”中,当我从“sidepanel”单击“btn1”时,“mainFrame”导航到“frame1”,即页面。在“frame1”中,我有一个边框控件作为唯一的孩子。
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;
}
将边框初始化为 page.Content=null 时出现“System.NullReferenceException”。但是,如果我第二次单击“btn1”,它将使用“System.Windows.Controls.Border”进行初始化。但是当我第一次点击“btn1”时,我想要这个结果。
请帮我一个好的解决方案。
【问题讨论】:
-
和问题没有直接关系,但
((mainWindow)App.Current.MainWindow).mainFrame.Content不应该是frame1吗?省去自己的痛苦,直接拨打this.Content -
就问题本身而言,您可能在页面生命周期中过早地尝试访问内容。尝试将您的代码移动到
Loaded事件中
标签: c# wpf xaml navigation