WPF开发(C#):页面/窗口跳转

# 页面/窗口跳转 #

参考网站: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();  //关闭当前窗口
        }


2:Page页面跳转Page页面跳转:前台跳转和后台跳转都可以实现前台实现:

Enter Page1

后台实现:

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();

*************************************************************************


你可能感兴趣的:(c#,web开发)