C# Windows 8 & 8.1 開發,啟用NavigationCacheMode,以防Navigate導覽至其他頁面時的資料遺失。

  • 1474
  • 0
  • C#
  • 2015-06-10

一般我們在撰寫Windows Store App時,很會去使用Frame.Navigate導覽至其他的頁面,但是當我們移至其他頁面後按下返回,回到原本的頁面卻發現資料遺失了!所有的控制項皆呈現最初的樣貌,這時我們就可以開啟NavigationCacheMode來保留我們原始頁面的資料唷!

本篇文章將引導您啟用NavigationCacheMode,以防Navigate導覽至其他頁面時的資料遺失。

一般我們在撰寫Windows Store App時,很會去使用Frame.Navigate導覽至其他的頁面,但是當我們移至其他頁面後按下返回,回到原本的頁面卻發現資料遺失了!所有的控制項皆呈現最初的樣貌,這時我們就可以開啟NavigationCacheMode來保留我們原始頁面的資料唷!

 

本篇文章將引導您啟用NavigationCacheMode,以防Navigate導覽至其他頁面時的資料遺失。

 

常見的問題在APP內從PageA跳至PageB再返回PageA時會發現原本的資料卻遺失了。

 

這對開發者來說是極嚴重的事情,對於使用者來說也會覺得 F**K 這什麼鬼爛APP...諸如此類的1顆星就從天而降。

 

所以我們可以透過開啟Navigation的快取功能來幫我們保留原本頁面的資料。

方法如下:

 

在PageA初始化時機加入以下程式碼:

 

   1:  public PageA()
   2:  {
   3:      this.InitializeComponent();
   4:      this.NavigationCacheMode = Windows.UI.Xaml.Navigation.NavigationCacheMode.Enabled;
   5:  }

 

也可以在Xaml 中加入NavigationCacheMode的功能:

 

   1:  <common:LayoutAwarePage
   2:      x:Name="pageRoot"
   3:      x:Class="App1.MainPage"
   4:      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   5:      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   6:      xmlns:local="using:Vieshow"
   7:      xmlns:common="using:Vieshow.Common"
   8:      xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
   9:      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  10:      mc:Ignorable="d"
  11:      NavigationCacheMode="Enabled" >

 

如此一來原始頁面的資料就不會遺失囉!

 

 

Refrences: Page.NavigationCacheMode Property

文章中的敘述如有觀念不正確錯誤的部分,歡迎告知指正 謝謝
轉載請註明出處,並且附上本篇文章網址 !  感謝。

SUKI

HOLIESTAR