[開發] 在APP中共用應用程式列

作者: hoyunxian (WildDagger)   2014-06-05 22:30:00
這個問題Win8.1才會碰到,WP因為不支援上方應用程式列所以應該是沒機會
(這是真的,開發文件已經說你要是在Page有定義上方應用程式列就會閃退給你看)
有看微軟的開發文件,應該都會看到微軟有在文件中提到,
上方應用程式列應該要能夠擔當導覽列的功能
(亦即我們常在網站上看到的那一排指示網站主要功能的功能列)
在這前提下,自然每一頁都要有上方應用程式列,
不過如果你的頁面多達十數個
(這是誇張化,實際上有善用資料綁定的話應該不可能超過十頁吧)
每一頁都要建同樣的應用程式列與觸發事件也許太不實際了
最好的方法,當然是讓所有頁面共用一個應用程式列就好
微軟的官方網站上也有給教學:
http://msdn.microsoft.com/zh-tw/library/windows/apps/xaml/jj150604.aspx
不過如果只給這個的話某程度上是在騙文章數(喂
所以這邊是稍微做補遺還有提示可以善用的方向
簡單來說,就是在首頁裡面再加上一層Frame,
然後在這個Frame裡面顯示APP的其他內容,
至於應用程式列就直接定義在首頁中,這樣子就可以達到共用的效果
如果感覺有點難理解的話,只要把Frame元件想像成HTML的Iframe標籤
或者甚至當成你的瀏覽器中顯示內容的那個區塊
(簡單說設在首頁的應用程式列相當於瀏覽器的工作列,
其他頁面就相當於呈現在瀏覽器內容框中的網頁)
(其實在Clark大與Ian大寫的《HTML5 & JavaScript程式開發實戰》這本書中
就有提到類似的概念,不過因為裡面是用HTML5寫Win8 APP所以可能比較不好懂)
至於關於那篇教學的部分,這邊做一點補充
1. 按照教學在Grid裡面建立rootFrame這個Frame元件後,
實際上打開是不會有反應的,你必須自己讓rootFrame去導覽到真正的首頁才行
這邊先假設真正首頁的名字是DefaultPage.xaml,
那麼程式碼如下:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e); // (這句有沒有都無所謂)
rootFrame.Navigate(typeof(DefaultPage));
}
雖然可能有些文件會告訴你Frame.Navigate這個方法
在OnNavigatedTo/OnNavigatedFrom這兩個事件中是不會作用的
但那是指於這兩個事件中在該文件所在的頁框中呼叫該頁框的Navigate方法,
該頁框不會有任何反應這件事
這段程式碼不是去呼叫首頁所在頁框中的Navigate方法
而是去呼叫首頁中的Frame的Navigate方法,因此這個方法會有效
另外傳送參數的方法和普通的巡覽頁面是相同的,請放在Navigate方法的第二個參數。
2. 範例中是呼叫GetType的方法去取得頁面物件並進行巡覽方法,
但是我實際使用的時候不知道是哪裡漏了,GetType方法抓不到子命名空間中的頁面
所以最後我只好直接用判斷按鈕Name/Tag的方式
如果沒有什麼特大問題的話其實用if判斷式或switch判斷式也無妨
這個方法主要是使用在Win8.1上,
不過如果有用Universal App的話,其實也能考慮用這個方法
在Win8.1的環境下把導覽之類的交給上方導覽列
在WP8.1的環境下可以直接用手機上的巡覽功能做處理
這樣就有更多東西可以共用了。
(剛才才終於把捷運APP用的資料編輯程式給寫好......有點頭痛)
作者: ZSZ1210 (夢)   2014-06-05 23:05:00
推推
作者: Cena520 (席納)   2014-06-05 23:44:00
恩,原來如此…
作者: s8974135620 (果汁( –口–)/)   2014-06-06 00:12:00
看不懂 不過還是推
作者: ccufcc (皮卡波)   2014-06-06 00:21:00
中共
作者: Lumia925 (Lumia)   2014-06-06 00:26:00
看成中共+1...
作者: BenShiuan (璇璇)   2014-06-06 00:36:00
中共+1
作者: pumua (丹)   2014-06-06 00:38:00
推 當時自己慢慢查了好久
作者: awesomemaxe (風見 隼人)   2014-06-06 01:36:00
看成中共+1
作者: TsaoCCFGOGO (書唸累時,就算數學吧)   2014-06-06 09:22:00
推 中共
作者: slodnet (冰晶雪花)   2014-06-06 09:29:00
在App,中共用應用程式列
作者: jovialian (嶬恩)   2014-06-06 09:40:00
專業推。看成中共用應用程式+1。
作者: Luftwaffe (德意志帝國空軍)   2014-06-06 09:55:00
看成中共用應用程式+1
作者: loamanda (LM)   2014-06-06 14:29:00
中共再+1
作者: white123123 (白☆)   2014-06-06 19:19:00
看成在中共用APP...
作者: LiaoKen02 (旭陵生活-嘉義高中)   2014-06-06 20:17:00
中共..
作者: ch25 (Wallace)   2014-06-06 22:05:00
什麼?中共?退回服貿 捍衛民主
作者: dosser (我肚子還有點餓...)   2014-06-07 00:18:00
看成中共+1
作者: felaray (傲嬌魚)   2014-06-07 01:09:00
還沒注意過這個部分..先推好了..
作者: salvador1988 (Mr.Owl)   2014-06-07 15:26:00
看成中共+1 想說是關鍵字封鎖app之類的

Links booklink

Contact Us: admin [ a t ] ucptt.com