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