如何在C#(3.0)中从WPF窗口导航到WPF页面?

4

你好,我已经被困在这里三天了,尝试了很多可能性。我有一个名为'Mainwindow.xaml'的WPF窗口,我想要导航到一个名为'addNewTech.xaml'的WPF页面,并保持'Manwindow.xaml'在后台打开,请帮助我解决这个问题。谢谢。

2个回答

5

首先,在MainWindow中添加Frame

例如:

使用此命名空间xmlns:local="clr-namespace:System.Windows.Controls;assembly=PresentationFramework"

<Grid>
   <local:Frame Name="MainFrame" NavigationUIVisibility="Hidden" >                            
   </local:Frame>
</Grid>

MainWindow.cs中调用AddNewTech以将页面加载到主窗口。
MainFrame.Navigate(new Uri("addNewTech.xaml",UriKind.Relative));

嘿,我按照您的指示操作了。我的MainWindow.xaml已经有一个Grid,在该Grid下面编写了Frame代码。我在MaimWindow.cs的button_click事件中编写了“MainFrame.Navigate(new Uri("addNewTech.xaml",UriKind.Relative));”这段代码,但没有任何反应,无法导航到'addNewTech.xmal'.... - user2067120
你的 addNewTech.xaml 必须在根目录中。否则请使用以下方式:MainFrame.Navigate(new Uri("foldername/addNewTech.xaml",UriKind.Relative)); - ebattulga
请检查Grid的宽度和高度是否不为0,并且addNewTech.xaml文件中是否包含任何可见内容。 - ebattulga
addnewTech.xaml有可见内容,如标签、文本框、列表框,网格的宽度和高度为自动。 - user2067120
好的解决方案,已经有一年没有做这个东西了,我都忘记了,谢谢。 - Alex

0
 NavigationService navService = NavigationService
 .GetNavigationService(this) 

navService.Navigate =  (new
 System.Uri("Page2.xaml",UriKind.RelativeOrAbsolute); 

或者

 Page2 nextPage = new Page2();

 navService.Navigate(nextPage);

或者

 Page2 page2Obj = new Page2(); //Create object of Page2


 page2Obj.Show(); //Show page2 this.Close(); //this will close Page1

1
最后一部分仅适用于Windows。原生WPF中没有Page.show()。此外,不要忘记在第二个选项中仍需要创建Nav服务对象。 - Sean Dunford
另外,.Navigate是一个方法,所以第一个示例不起作用,因为你不能对其进行赋值。你需要像第二个示例中那样调用它。 - Sean Dunford

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接