<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在普遍的業務場景當中, 必不可少的是頁面切換, 而Prism就可以使用Navigation功能來進行頁面導航, 在不同的場景當中會有各種用法, 例如在切換頁面驗證、傳遞引數、返回上一頁、返回下一頁等功能。
1.註冊顯示區域
2.註冊導航頁面
註冊檢視型別或新增別名, 如果為指定別名,名稱預設為當中型別的名稱
public class ModuleAModule : IModule { public void OnInitialized(IContainerProvider containerProvider) { } public void RegisterTypes(IContainerRegistry containerRegistry) { //新增別名 "CustomName" containerRegistry.RegisterForNavigation<ViewA>("CustomName"); //預設名稱 "ViewB" containerRegistry.RegisterForNavigation<ViewB>(); } }
註冊時,指定ViewModel或新增別名。
public class ModuleAModule : IModule { public void OnInitialized(IContainerProvider containerProvider) { } public void RegisterTypes(IContainerRegistry containerRegistry) { //指定ViewModel containerRegistry.RegisterForNavigation<ViewA, ViewAViewModel>(); //指定ViewModel並且新增別名 containerRegistry.RegisterForNavigation<ViewB, ViewBViewModel>("CustomName"); } }
正如前面的章節所講到, Region的註冊以及管理、導航等, 我們可以使用IRegionManager介面,所以,我們現在便可以使用該介面實現導航功能, 如下所示:
IRegionManager regionManager = …; regionManager.RequestNavigate("RegionName", "ViewName");
可以注意點, 我們呼叫了IRegionManager介面的RequestNavigate方法, 並且傳遞了兩個引數:
正如,我們想要在導航頁前, 傳遞一些引數, 則可以使用NavigationParameters, 如下所示:
var param = new NavigationParameters(); param.Add("Parameter", param); _regionManger.RequestNavigate("RegionName", "ViewName", param); //類似URL地址傳遞引數 _regionManger.RequestNavigate("RegionName", "ViewName?id=1&Name=xiaoming");
當我們使用導航為指定區域註冊檢視時, 我們怎麼控制開啟的過程? 所以, 下面我們將講解一下
INavigationAware介面。
該介面包含3個方法, 每個方法中都包含當前導航的上下文, 如下所示:
public void OnNavigatedTo(NavigationContext navigationContext) { } public bool IsNavigationTarget(NavigationContext navigationContext) { return true; } public void OnNavigatedFrom(NavigationContext navigationContext) { }
正如上面所描述, 導航中允許我們傳遞引數, 用於在我們完成導航之前, 進行做對應的邏輯業務處理。這時候, 我們便可以在OnNavigatedTo方法中通過導航上下文中獲取到傳遞的所有引數。如下:
public void OnNavigatedTo(NavigationContext navigationContext) { var id = navigationContext.Parameters.GetValue<int>("id"); var name = navigationContext.Parameters["Name"].ToString(); }
該介面繼承於INavigationAware, 所以, 它多了一個功能: 允許使用者針對導航請求進行攔截。
//多了一個回撥函數, 該值覺得是否攔截該導航請求 void ConfirmNavigationRequest(NavigationContext navigationContext, Action<bool> continuationCallback);
當開啟新的導航時, 或許有些情況下你需要經過使用者進行確認, 這個時候, IConfirmNavigationRequest介面可以滿足需求, 如下:
public void ConfirmNavigationRequest(NavigationContext navigationContext, Action<bool> continuationCallback) { bool result = true; if (MessageBox.Show("確認導航?", "溫馨提示", MessageBoxButton.YesNo) == MessageBoxResult.No) result = false; //通過回撥當前返回的確認結果,決定是否啟動該導航 continuationCallback(result); }
導航紀錄檔, 其實就是對導航系統的一個管理功能, 理論上來說, 我們應該知道我們上一步導航的位置、以及下一步導航的位置, 包括我們導航的歷史記錄。以便於我們使用導航對應用程式可以靈活的控制。
該介面包含以下功能:
當導航紀錄檔當中,包含上一頁的歷史記錄, 如下所示, D的前面有ABC的記錄,所以對於D而言, 它可以返回上一頁, 所以CanGoBack 為True。
當導航紀錄檔當中,包含下一個的歷史記錄,如下所示,D的後面有E的記錄,所以對於D而言,它可以返回下一頁,所以CanGoForward 為True。
到此這篇關於WPF框架Prism中導航Navigation用法介紹的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45