如何在Silverlight中切換“頁面”

最近初學Silverlight,有海量的問題需要解決。本來想把所有看到的英文版的好東西都在這裏翻譯出來,方便英文不佳(雖然我的英文也不好)的初學兄弟,同時翻譯的過程也是學習的過程。無奈時間實在緊張。這次就先把這個切換頁面的方法記錄一下。
這個做法是來自“Jesse Liberty”的視頻“USING MULTIPLE PAGES, PART 1”,基本方法是創建一個PageSwticher,這個PageSwitcher不直接顯示頁面,而是作爲一個後臺,負責切換各個頁面。
具體做法是:
新建一個UserControl,名字可以叫做PageSwitcher。然後將PageSwitcher.xaml中的Grid控件去掉,編程下面這樣:

  1. <UserControl x:Class="SilverlightDemo.PageSwitcher" 
  2.     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation%22 
  3.     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml%22> 
  4. </UserControl>  

然後在後臺代碼中增加一個方法,比如叫做SwitchPage,用來切換頁面,然後在構造函數中調用,用來顯示第一個要顯示頁面:

  1. public partial class PageSwitcher : UserControl 
  2.     { 
  3.         public PageSwitcher() 
  4.         { 
  5.             InitializeComponent(); 
  6.             SwitchPage(new Page());    //顯示第一個要顯示的頁面 
  7.         }  
  8.  
  9.         /// <summary> 
  10.         /// 切換頁面 
  11.         /// </summary> 
  12.         /// <param name="newPage">需要被切換到的頁面</param> 
  13.         public void SwitchPage(UserControl newPage) 
  14.         { 
  15.             this.Content = newPage; 
  16.         } 
  17.     }  

然後在我們的各個頁面中,在需要切換頁面的事件響應方法中,只需要這麼做:

  1. private void btn_Click(object sender, RoutedEventArgs e) 
  2.     PageSwitcher switcher = this.Parent as PageSwitcher; 
  3.     switcher.SwitchPage(new AnotherPage()); 

最後,我們需要修改app.xaml.cs中的Application_Startup方法,修改起始頁面

  1. private void Application_Startup(object sender, StartupEventArgs e) 
  2.     this.RootVisual = new PageSwitcher(); 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章