这段时间用到Wpf,页面间的跳转网上有不少的示例,但是有些已经不能用了,尤其是页面间的传参问题更是一大堆,但正确的解决方案却没有几个,或者说写的不清楚,让人走了很多弯路,查看官方文档后发现了正确的姿势,现记录如下
Page页间的跳转
private void Button_Click(object sender, RoutedEventArgs e) { Page2 p = new Page2(); this.NavigationService.Navigate(p, DateTime.Now); }
//xaml 页面跳转实例 <Button Height="30" VerticalAlignment="Top"> <Hyperlink NavigateUri="Page2.xaml" Foreground="Red"> 跳转 </Hyperlink> </Button>
很简单吧。(网上有的说是Uri("") 做参数,发现不好使 )
Window To Page 跳转
//需要借助 NavigationWindow 实现 NavigationWindow nav = new NavigationWindow(); nav.Source = new Uri("Page1.xaml", UriKind.Relative); nav.Show();
最后 说下page间传参数的问题
Page1 to Page2
Page1.cs private void Button_Click(object sender, RoutedEventArgs e) { Page2 p = new Page2(); this.NavigationService.Navigate(p, DateTime.Now);//注意LoadCompleted 事件的位置在 Page1.cs 中 this.NavigationService.LoadCompleted += p.NavigationService_LoadCompleted; }
Page2.cs public void NavigationService_LoadCompleted(object sender, NavigationEventArgs e) { string msg = string.Format("{0} loaded.", e.ExtraData); MessageBox.Show(msg); }
有人说是 NavigationService.LoadCompleted 放在page2中,但会有 NavigationService 的NullReferenceExcepteion。
放在Load中就不会有此异常,但是页面刚跳转无效,返回就有,还是不行。
查找文档后 整理如上避免太多人的入坑,内容纯手写,仅此笔记而已,不喜勿喷。。。
原文地址:https://www.cnblogs.com/lic0914/p/9900314.html
时间: 2024-11-10 16:36:04