91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

WPF框架Prism中導航Navigation怎么使用

發布時間:2022-02-11 13:44:40 來源:億速云 閱讀:471 作者:iii 欄目:開發技術

這篇文章主要講解了“WPF框架Prism中導航Navigation怎么使用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“WPF框架Prism中導航Navigation怎么使用”吧!

使用場景

在普遍的業務場景當中, 必不可少的是頁面切換, 而Prism就可以使用Navigation功能來進行頁面導航, 在不同的場景當中會有各種用法, 例如在切換頁面驗證、傳遞參數、返回上一頁、返回下一頁等功能。

導航的基本條件

1.注冊顯示區域

2.注冊導航頁面

1.注冊導航

注冊視圖類型或添加別名, 如果為指定別名,名稱默認為當中類型的名稱

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");
        }
    }

2.使用導航

正如前面的章節所講到, Region的注冊以及管理、導航等, 我們可以使用IRegionManager接口,所以,我們現在便可以使用該接口實現導航功能, 如下所示:

IRegionManager regionManager = …;
regionManager.RequestNavigate("RegionName", "ViewName");

可以注意點, 我們調用了IRegionManager接口的RequestNavigate方法, 并且傳遞了兩個參數:

  • RegionName: 該參數為注冊的區域名稱

  • ViewName: 該參數實際為我們上面注冊過的導航頁, 字符串類型, 對應的是我們注冊頁面的nameof

3.帶參數導航

正如,我們想要在導航頁前, 傳遞一些參數, 則可以使用NavigationParameters, 如下所示:

var param = new NavigationParameters();
param.Add("Parameter", param);
_regionManger.RequestNavigate("RegionName", "ViewName", param);

//類似URL地址傳遞參數
_regionManger.RequestNavigate("RegionName", "ViewName?id=1&Name=xiaoming");

疑問?

當我們使用導航為指定區域注冊視圖時, 我們怎么控制打開的過程? 所以, 下面我們將講解一下

INavigationAware接口。

INavigationAware

該接口包含3個方法, 每個方法中都包含當前導航的上下文, 如下所示:

        public void OnNavigatedTo(NavigationContext navigationContext)
        {

        }

        public bool IsNavigationTarget(NavigationContext navigationContext)
        {
            return true;
        }

        public void OnNavigatedFrom(NavigationContext navigationContext)
        {

        }
  • OnNavigatedTo: 導航完成前, 此處可以傳遞過來的參數以及是否允許導航等動作的控制。

  • IsNavigationTarget: 調用以確定此實例是否可以處理導航請求。否則新建實例

  • OnNavigatedFrom: 當導航離開當前頁時, 類似打開A, 再打開B時, 該方法被觸發。

INavigationAware 執行流程

WPF框架Prism中導航Navigation怎么使用

獲取導航請求參數

正如上面所描述, 導航中允許我們傳遞參數, 用于在我們完成導航之前, 進行做對應的邏輯業務處理。這時候, 我們便可以在OnNavigatedTo方法中通過導航上下文中獲取到傳遞的所有參數。如下:

        public void OnNavigatedTo(NavigationContext navigationContext)
        {
            var id = navigationContext.Parameters.GetValue<int>("id");

            var name = navigationContext.Parameters["Name"].ToString();
        }

IConfirmNavigationRequest

該接口繼承于INavigationAware, 所以, 它多了一個功能: 允許用戶針對導航請求進行攔截。

    //多了一個回調函數, 該值覺得是否攔截該導航請求
    void ConfirmNavigationRequest(NavigationContext navigationContext, Action<bool> continuationCallback);

IConfirmNavigationRequest 執行流程

WPF框架Prism中導航Navigation怎么使用

攔截導航請求

當打開新的導航時, 或許有些情況下你需要經過用戶進行確認, 這個時候, IConfirmNavigationRequest接口可以滿足需求, 如下:

        public void ConfirmNavigationRequest(NavigationContext navigationContext, Action<bool> continuationCallback)
        {
            bool result = true;

            if (MessageBox.Show("確認導航?", "溫馨提示", MessageBoxButton.YesNo) == MessageBoxResult.No)
                result = false;

            //通過回調當前返回的確認結果,決定是否啟動該導航
            continuationCallback(result);
        }

Navigation Journal

導航日志, 其實就是對導航系統的一個管理功能, 理論上來說, 我們應該知道我們上一步導航的位置、以及下一步導航的位置, 包括我們導航的歷史記錄。以便于我們使用導航對應用程序可以靈活的控制。

IRegionNavigationJournal

該接口包含以下功能:

  • GoBack() : 返回上一頁

  • CanGoBack : 是否可以返回上一頁

  • GoForward(): 返回后一頁

  • CanGoForward : 是否可以返回后一頁

1.示例(返回上一頁)

當導航日志當中,包含上一頁的歷史記錄, 如下所示, D的前面有ABC的記錄,所以對于D而言, 它可以返回上一頁, 所以CanGoBack 為True。

WPF框架Prism中導航Navigation怎么使用

2.示例(返回下一頁)

當導航日志當中,包含下一個的歷史記錄,如下所示,D的后面有E的記錄,所以對于D而言,它可以返回下一頁,所以CanGoForward 為True。

WPF框架Prism中導航Navigation怎么使用

感謝各位的閱讀,以上就是“WPF框架Prism中導航Navigation怎么使用”的內容了,經過本文的學習后,相信大家對WPF框架Prism中導航Navigation怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

江达县| 茂名市| 石林| 赣榆县| 喀喇沁旗| 信阳市| 白河县| 红桥区| 中西区| 英吉沙县| 天柱县| 平塘县| 庄河市| 武定县| 天等县| 东乌珠穆沁旗| 修文县| 厦门市| 永康市| 祁连县| 汕尾市| 岢岚县| 平阴县| 南木林县| 滕州市| 衡山县| 白水县| 冕宁县| 尉犁县| 乳源| 台湾省| 甘南县| 得荣县| 潮安县| 汕头市| 开封市| 宜都市| 安义县| 桃源县| 高清| 昌吉市|