31天學(xué)會(huì)Windows Phone 7開(kāi)發(fā):返回鍵
上一篇,我們討論了頁(yè)面導(dǎo)航,以及如何簡(jiǎn)單的調(diào)用NavigationService從而到達(dá)程序中的不同頁(yè)面。簡(jiǎn)要地提到了返回鍵,但返回鍵的復(fù)雜性是值得在本系列中單獨(dú)成文的,主要是因?yàn)槟憧梢?strong>重寫(xiě)(override)返回鍵的行為。
返回鍵如何工作
和瀏覽器中的返回按鈕很相似。你可以點(diǎn)擊它通過(guò)會(huì)話的決策信息后退。它能讓你跨越多個(gè)站點(diǎn),還有這些站點(diǎn)中的每個(gè)頁(yè)面。Windows Phone中的返回鍵工作方式與之相同。它能讓你回到之前訪問(wèn)過(guò)的頁(yè)面,甚至是跨應(yīng)用程序!
例如,如果我:
1.打開(kāi)人物中心(People Hub);
2.在聯(lián)系人列表中選擇“Jeff Blankenburg”;
3.點(diǎn)擊他的家庭地址(使我們進(jìn)入地圖應(yīng)用程序);
4.點(diǎn)擊開(kāi)始按鈕;
5.開(kāi)始游戲。
當(dāng)點(diǎn)擊返回鍵時(shí),會(huì)沿著發(fā)生的事件列表后退。
重寫(xiě)返回鍵行為
是的,你沒(méi)看錯(cuò)。你可以如你所想重定義返回鍵的行為。但這不表明允許你通過(guò)這種能力做一些不負(fù)責(zé)任的行為。在任何你想重寫(xiě)返回鍵行為的時(shí)候,你應(yīng)該確認(rèn)你所認(rèn)為的“返回”的意思和你的用戶所想的是一樣。
例如,你打開(kāi)了一個(gè)彈出框,用戶的肌肉記憶可能會(huì)使他們按下返回鍵來(lái)關(guān)閉彈出框。在這種情況下,他們的本意不是離開(kāi)應(yīng)用程序,“返回”僅僅意味著擺脫彈出的對(duì)話框。
另一個(gè)例子,如果你有個(gè)游戲依賴于計(jì)時(shí)器或?qū)崟r(shí)動(dòng)作,使用返回鍵來(lái)暫停游戲就比較合適而非讓人立即離開(kāi)。下面是一些此類(lèi)事件的指導(dǎo)原則:
1.你應(yīng)該設(shè)身處地為用戶考慮那一時(shí)刻“返回”對(duì)他們意味著什么。
2.如果再次用戶按下返回鍵,你應(yīng)該讓默認(rèn)行為執(zhí)行。
3.使用返回鍵暫停游戲是個(gè)非常好的想法,但再按一次意味著他們真的想返回到前面,那就得讓他們能后退。
這是在Windows Phone中重寫(xiě)返回鍵的代碼:
- protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
- {
- //你自己的代碼。認(rèn)真負(fù)責(zé)些。
- e.Cancel = true; //取消默認(rèn)行為。
- }
下一篇我們討論設(shè)備的方向以及如何在程序中處理橫縱方向問(wèn)題。
原作者:Jeff Blankenburg 譯者:金山崟霸
中文來(lái)源:http://www.cnblogs.com/porscheyin/archive/2010/11/21/1883395.html
英文來(lái)源:http://www.jeffblankenburg.com/2010/10/03/31-days-of-windows-phone-day-3-the-back-button-paradigm/
【編輯推薦】