假設有階層的需求,我們需要一個可以不斷的產生下一層的方法,也就是自我巡覽。
|
( 第一層) |
左圖為第一層,當按下One之後,將會巡覽到下一層(第二層),暫時以MessageBox提示來識別。 |
|
(第二層) |
左圖為第二層,當進入新的一層的時候,MessageBox會跳出訊息顯示”這是新頁面”。 |
|
(回到第一層) |
左圖為第一層,當按下Back鍵回到上一頁時,MessageBox會跳出”這是上一頁”。 |
詳細的實作程式碼如下,
C#
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
string pageStr = "";
switch (e.NavigationMode)
{
case System.Windows.Navigation.NavigationMode.New:
pageStr = "這是新頁面";
break;
case System.Windows.Navigation.NavigationMode.Back:
pageStr = "這是上一頁";
break;
}
MessageBox.Show(pageStr);
base.OnNavigatedTo(e);
}
// 載入 ViewModel 項目的資料
private void MainPage_Loaded(object sender, RoutedEventArgs e)
{
if (!App.ViewModel.IsDataLoaded)
{
App.ViewModel.LoadData();
}
}
private void ListBox_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
{
// 點下去巡覽下一頁(使用Now.tick來創造不同的URI達成同一頁自我巡覽)
NavigationService.Navigate(new Uri("/MainPage.xaml?" + DateTime.Now.Ticks, UriKind.Relative));
ListBox listbox = sender as ListBox;
int index = listbox.SelectedIndex;
MessageBox.Show
(
"標題 = " + App.ViewModel.Items[index].LineOne + "\r\n" +
"內文 = " + App.ViewModel.Items[index].LineTwo + "\r\n"
);
}
在自我巡覽中,每一層的 NavigationService字串必須是不一樣的,如果想巡覽下一層,但下一層NavigationService字串跟目前這一層是一樣的,會發生無法巡覽下一層的情況,
也就是NavigationService.Navigate會失效,所以必須在後方加入一個變數,讓他每次不一樣,這邊可以依照需要自行決定需傳入的變數。
文章標籤
全站熱搜
