一、frame、page架構的相關介紹
1、frame類:
繼承層次結構
system.object
system.windows.threading.dispatcherobject
system.windows.dependencyobject
system.windows.media.visual
system.windows.uielement
system.windows.frameworkelement
system.windows.controls.control
system.windows.controls.contentcontrol
system.windows.controls.frame
命名空間:system.windows.controls
程式集:presentationframework(在presentationframework.dll中)
frame是能夠定位到并顯示内容的内容控件。frame可以在其他内容中承載,與其他控件群組件。
當frame控件導航到 html内容時,内部frame控件執行個體化本機 webbrowseractivex控件。wpf通過對函數控件啟用安全功能在浏覽器 activex控件。應用于的功能控制對 xbap和獨立應用程式不同。某些應用程式應通過附加功能控制防止惡意内容運作。有關更多資訊,請參見中的 “浏覽器控件和功能控制”在安全性(wpf)的和webbrowsercontrol overviews and tutorials部分。
内容可以導航到通過設定與uri的source屬性所需内容的。另外,可以使用navigate方法的一下重載之一,内容可以導航到:navigate(uri),navigate(uri,object)
如果内容導航到由uri時,frame傳回包含内容的對象。或者,内容可以導航到使用接受一個對象的navigate方法重載:navigate(object),navigate(object,object)
導航的生存期可以通過以下活動來跟蹤:navigating,navigated,navigationprogress,navigationfailed,navigationstopped,loadcompleted,framentnavigation
不是導航發生的所有事件都引發;引發事件集的方式取決于發生的類型的導航(内容或内容片段),這個導航完成(取消,停止或失敗)。
2、page類
system.web.ui.control
system.web.ui.templatecontrol
system.web.ui.page
system.web.ui.datavisualization.charting.charthttphandler
system.web.ui.mobilecontrols.mobilepage
命名空間: system.web.ui
二、 wpf、wp8 silverlight 中的導航實作
1、在wpf中的導航:
window到window:
window window1=new window();
window1.show();
window到page:
navigation windowwindow1=new navigationwindow();
window1.source=newuri(“page1.xaml“,urikind.relative);
page到page:
navigationservice.getnavigationservice(this).navigate(newuri(“page2.xaml”,urikind.relative));
2、在silverlight(包括wp8開發的時候選擇銀光架構時)中的導航:
(sliver 的意思是切開,切片) (silver才是銀色)
this.navigationservice.navigate(newuri(“/page1.xaml”,urikind.relative);
在wpf中反斜杠是可有可無的,但是wp8中必須要的。
三、淺談wpf、silverlight和winrt
在wpf(wpf4)中,導航主要是navigationservice類型,frame,page和navigationwindow類型都有navigationservice屬性,同時frame類型還有一些方法比如navigate就是直接調用其背後的navigationservice的相應方法。
frame繼承自contentcontrol,page繼承自frameworkelement。
navigate方法可以傳入uri和object參數,同時支援第二個object代表額外資料。然後再frame.navigated事件中,通過navigationeventargs的extradata屬性來擷取額外的資料。但是wpf中的導航資料傳遞對于開發者來說很頭疼。
在winrt中,沒有了navigationservice。navigationcachemode等在silverlight中都有的。同時page還引入了一些新的元素,比如winrt中特有的appbar。最後winrt中的page同時引用frame對象,這個可以說是navigationservice的代替吧,因為如果page連frame都不引用,那麼page本身便不具備任何主動導航功能了。
wp8中使用銀光貌似隻是權宜之計?銀光也逐漸被微軟放棄,随着應用商店的合并,winrt架構也更能夠在多種裝置中遊刃有餘。