# 页面/窗口跳转 #
参考网站:https://www.cnblogs.com/-Apple/p/3156269.html
WPF页面跳转有两种:一种是windows,另外一种是page
1:windows页面跳转
windows 页面跳转相信学过winform编程的哥们都知道,先实例化该窗体然后show一下就可以了.eg:有两个窗体Main和Login,要想点击Login 窗体上的注册按钮然后跳转到Main上,则在Login窗体的Click事件里代码如下:Main Mn=new Main();Mn.Show();
private void btn1_Click(object sender, RoutedEventArgs e)
{
Login login1 = new Login(); //Login为窗口名,把要跳转的新窗口实例化
login1.Show(); //打开新窗口
this.Close(); //关闭当前窗口
}
<TextBlockFontSize="24"TextWrapping="Wrap"Margin="0,0,0,0">
<Hyperlinkx:Name="LnkPre"NavigateUri="Page1.xaml"Foreground="Black">
Enter Page1
</Hyperlink>
</TextBlock>
后台实现:
NavigationService.GetNavigationService(this).Navigate(new Uri("Page1.xaml", UriKind.Relative));
NavigationService.GetNavigationService(this).GoForward();//向后转
NavigationService.GetNavigationService(this).GoBack(); //向前转
在后台还可以这样写:this.content = new Page1();(这种比较简单,但是建议大家使用前一种更能提高自己,呵呵)
另外还可以以实现windows跳转到page:
NavigationWindow window =new NavigationWindow();
window.Source =new Uri("Page1.xaml", UriKind.Relative);
window.Show();
***************************************************************
# 页面跳转中函数Show() 和ShowDialog()区别 #
参考网站:https://zhidao.baidu.com/question/54948499.html
面对多窗口的调用的时候,我们往往不喜欢窗口之间的随意切换,那样我们还有花费时间寻找我们要用的窗口,而且,一但出现问题,窗口的顺序也有可能被再次打乱,很是不顺手,那么我们怎么办呢? 我们可以将show方法转化为showdialog方法,顾名思义,showdialog是一个进行路经绑定的show方法,他是不可以自由切换的,换言之,就是,当你没有关闭你当前页的前提下,你是无法关闭该页面后面的任一页面的,它是当前唯一(路经打开)为true的。 而show方法由于未进行绑定,它所显示的各个窗口、对话框是可以相互切换,而不需要关闭当前窗口、对话框。但是他由于未进行绑定,所以每个由show方法打开的窗口的顺序是非固定的,如果遇到什么问题,由show方法打开的窗口的顺序可能会有很大的改变! show()仅仅是显示出来窗口界面而已```也就是和你执行的结果在同一窗口显示```所显示的窗口可以在后台运行```而showDialog()是一个对话框窗口界面```执行结果以新窗口界面出现```不允许进行后台运行```就是你想编辑什么的时候```非得先关闭showDialog()窗口界面才可以进行其他操作``` 这就是它们的一点小区别了``` show()是非模式窗体. showDialog()是模式窗体. 区别在于,以showDialog()打开的窗体,要等窗体关闭后才能操作其他窗体.而show()则不受此限制. 这是最经常的区别了, 还有一个我个人使用的心得,你可以了解 比如你先打开子窗体,想隐藏主窗体。 如果这个时候用Show的话,则会发生的事情是,打开子窗体的同时主窗体又显示出来,而使用ShowDialog()的时候主要当子窗体关闭的时候主窗体才会显示。 简单代码如下: Form2 f2 = new Form2(); this.Visible = false; f2.ShowDialog(); this.Visible= true; 这就是模态对话框的与Show的区别。
**********************************************************************
# 窗口之间传值 #
参考网站:https://bbs.csdn.net/topics/390172282
可以改一下构造函数
public MainWindow(string value1,string value2)
{
//...
}
调用:
MainWindow window=new MainWindow(传值1,传值2);
window.Show();
*************************************************************************