C# 如何从页面导航回主窗口?

C# 如何从页面导航回主窗口?,c#,.net,wpf,navigation,C#,.net,Wpf,Navigation,我目前正在构建WPF应用程序,从另一个页面(compiledpage)导航回主窗口时遇到问题 我可以导航回以前的页面,但不能导航到主窗口本身 MainWindow.xaml.cs(窗口) Q1.xaml.cs(第页) Q2.xaml.cs(第页) compiledpage.xaml.cs(第页) private void backButton_单击(对象发送方,路由目标) { 主窗口pg=新的主窗口(); var window=(MainWindow)Application.Current.Ma

我目前正在构建WPF应用程序,从另一个页面(compiledpage)导航回主窗口时遇到问题

我可以导航回以前的页面,但不能导航到主窗口本身

MainWindow.xaml.cs(窗口)

Q1.xaml.cs(第页)

Q2.xaml.cs(第页)

compiledpage.xaml.cs(第页)

private void backButton_单击(对象发送方,路由目标)
{
主窗口pg=新的主窗口();
var window=(MainWindow)Application.Current.MainWindow;

window.Content=pg;//我认为您应该在解决方案中使用ContentControl。 创建多个视图(用户控件)并将此实例传递给ContentControl.Content属性

...
<ContentControl x:Name="navigatedRegion"/>
...

viewA是自定义用户控件的实例。

您可以将框架控件添加到主窗口,并使用该框架更改窗口内容。请参见此示例

MainWindow.xaml


MainWindow.xaml.cs

公共部分类主窗口
{
公共主窗口()
{
初始化组件();
Application.Current.MainWindow=此;
加载+=OnMainWindowLoaded;
}
MainWindowLoaded上的私有void(对象发送方,RoutedEventArgs e)
{
更改视图(新页面1());
}
公共无效更改视图(页面视图)
{
MainFrame.NavigationService.Navigate(视图);
}
}
第1.xaml页


Page1.xaml.cs

公共部分类第1页
{
公共页1()
{
初始化组件();
}
private void OnGoToPage2ButtonClicked(对象发送方、路由目标方)
{
var mainWindow=(mainWindow)Application.Current.mainWindow;
主窗口?.ChangeView(新页面2());
}
}

第2.xaml页


Page2.xaml.cs

公共部分类第2页
{
公共页2()
{
初始化组件();
}
已单击private void OngotoPage3按钮(对象发送方,路由目标)
{
var mainWindow=(mainWindow)Application.Current.mainWindow;
主窗口?.ChangeView(新页面3());
}
}

第3.xaml页


Page3.xaml.cs

公共部分类第3页
{
公共网页3()
{
初始化组件();
}
私有void OnBackToPage1ButtonClicked(对象发送方、路由目标方)
{
var mainWindow=(mainWindow)Application.Current.mainWindow;
主窗口?.ChangeView(新页面1());
}
}

输出:


你的问题没有意义,一个窗口不能是一个页面。你的窗口承载一个你认为是主页的页面,这完全不同。另外,用一个更完整的例子来编辑你的问题,因为在实现基于导航的WPF应用程序时有不同的方法。
private void naviQ2ButtonClick(object sender, RoutedEventArgs e)
{
    // instantiate mainwindow and store it in the window variable
    var window = (MainWindow)Application.Current.MainWindow;

    // instantiate Q2 page and pass the string variable "sb" as arguments to Q2 page/class
    Q2 pg2 = new Q2(sb.ToString());

    // set the current content control to Q2 page
    window.Content = pg2;
}
private void compileButtonClick(object sender, RoutedEventArgs e)
{
    // instantiate mainwindow and store it in the window variable
    var window = (MainWindow)Application.Current.MainWindow;

    // instantiate  compiledpage and pass the string variable "sb" and valueFromQ1 as arguments to compiledpage/class
    Compiledpage pg3 = new Compiledpage(sb.ToString(), valueFromQ1); 

    // Show compiledpage in the current window
    window.Content = pg3;
}
private void backButton_Click(object sender, RoutedEventArgs e)
{
     MainWindow pg = new MainWindow();
     var window = (MainWindow)Application.Current.MainWindow;
     window.Content = pg;  //<- this doesn't work
}
...
<ContentControl x:Name="navigatedRegion"/>
...
public void NavigateToA()
{
    var viewA = new ViewA();
    navigatedRegion.Content = viewA;
}