最近初學Silverlight,有海量的問題需要解決。本來想把所有看到的英文版的好東西都在這裏翻譯出來,方便英文不佳(雖然我的英文也不好)的初學兄弟,同時翻譯的過程也是學習的過程。無奈時間實在緊張。這次就先把這個切換頁面的方法記錄一下。
這個做法是來自“Jesse Liberty”的視頻“USING MULTIPLE PAGES, PART 1”,基本方法是創建一個PageSwticher,這個PageSwitcher不直接顯示頁面,而是作爲一個後臺,負責切換各個頁面。
具體做法是:
新建一個UserControl,名字可以叫做PageSwitcher。然後將PageSwitcher.xaml中的Grid控件去掉,編程下面這樣:
- <UserControl x:Class="SilverlightDemo.PageSwitcher"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation%22
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml%22>
- </UserControl>
然後在後臺代碼中增加一個方法,比如叫做SwitchPage,用來切換頁面,然後在構造函數中調用,用來顯示第一個要顯示頁面:
- public partial class PageSwitcher : UserControl
- {
- public PageSwitcher()
- {
- InitializeComponent();
- SwitchPage(new Page()); //顯示第一個要顯示的頁面
- }
- /// <summary>
- /// 切換頁面
- /// </summary>
- /// <param name="newPage">需要被切換到的頁面</param>
- public void SwitchPage(UserControl newPage)
- {
- this.Content = newPage;
- }
- }
然後在我們的各個頁面中,在需要切換頁面的事件響應方法中,只需要這麼做:
- private void btn_Click(object sender, RoutedEventArgs e)
- {
- PageSwitcher switcher = this.Parent as PageSwitcher;
- switcher.SwitchPage(new AnotherPage());
- }
最後,我們需要修改app.xaml.cs中的Application_Startup方法,修改起始頁面
- private void Application_Startup(object sender, StartupEventArgs e)
- {
- this.RootVisual = new PageSwitcher();
- }