1. 程式人生 > >WPF開發(C#):頁面/視窗跳轉

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頁面跳轉:前臺跳轉和後臺跳轉都可以實現前臺實現:

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

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