WPF主窗口内容从页面加载

时间:2015-10-29 13:26:40

标签: c# wpf

我有一个MainWindow和一个页面 我通过该代码将页面内容加载到主窗口

NewPage abt = new NewPage();
this.Content = abt;

但如何卸载页面(重新加载主窗口控件并关闭页面) 如果我使用相同的代码加载主窗口内容,我会收到运行时错误

2 个答案:

答案 0 :(得分:2)

我这样做的方法是在XAML中有一个框架,如下所示:

<Frame Grid.RowSpan="4" Grid.ColumnSpan="3" x:Name="_NavigationFrame" NavigationUIVisibility="Hidden"/>

然后我可以设置一个页面并卸载一个页面:

_NavigationFrame.Navigate(customPage);
//code to hide main page controls
_NavigationFrame.Navigate(null);
//code to make main page controls visible

答案 1 :(得分:0)

我不认为将页面加载到MainWindow内容是一个很好的解决方案,但如果你需要它你可能会在更改之前获得当前状态并将其保存到某些属性(或其他一些东西,如xml文件)。如下:

public partial class MainWindow()
{
    FrameworkElement previousContent; // I believe Content property is of FrameworkElement type
    public MainWindow()
    {
        ...
    }
    ...

    public void ChangeContent()
    {
        previousContent = this.Content; // save state
        NewPage abt = new NewPage();
        this.Content = abt; // set new state
    }

    //And later You can restore this state by:
    public void RestorPreviousContent()
    {
        this.Content = previousContent;
    }