WPF Prism框架合集(9.Dialog)


導航

開發者博客
文檔學習
開發者平台

視頻教程地址

點擊觀看視頻教程

上一章回顧

1.注冊及使用導航、傳遞參數
2.INavigationAware接口作用及執行流程
3.IConfirmNavigationRequest接口作用及執行流程
4.IRegionNavigationJournal接口作用及執行流程
本章節將講解Prism當中的Dialog服務

什么是Dialog?

對話框實際上是我們應用程序經常用到的一個功能, 類如: Show、ShowDialog。
可以彈出一個我們指定的窗口, 僅此而已, 那么在Prism當中, Dialog指的是什么?

Prism提供了一組對話服務, 封裝了常用的對話框組件的功能, 例如:

  • RegisterDialog/IDialogService (注冊對話及使用對話)
  • 打開對話框傳遞參數/關閉對話框返回參數
  • 回調通知對話結果

創建Dialog流程

  • 創建對話框,通常是一組用戶控件 ,並且實現 IDialogAware
public interface IDialogAware
{
string Title { get; }
event Action<IDialogResult> RequestClose;
bool CanCloseDialog();
void OnDialogClosed();
void OnDialogOpened(IDialogParameters parameters);
}
  • 注冊對話框 RegisterDialog
        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {
            //僅注冊視圖
            containerRegistry.RegisterDialog<MessageDialog>();

            //注冊視圖時綁定VM
            containerRegistry.RegisterDialog<MessageDialog, MessageDialogViewModel>();

            //添加別名
            containerRegistry.RegisterDialog<MessageDialog>("DialogName");
        }
  • 使用IDialogService接口 Show/ShowDialog 方法調用對話框
        private readonly IDialogService dialogService;

        private void ShowDialog()
        {
            DialogParameters keys = new DialogParameters();
            keys.Add("message", "Hello,Prism!");

            dialogService.ShowDialog("MessageDialog", keys, arg =>
            {
                
            });
        }

調用Show/ShowDialog,我們通過注冊時候的名稱進行打開, 並且可以傳遞參數, 以及回調方法(主要用於返回對話框的返回結果)

封裝Dialog API

對於對話框而言, 通常我們需要做的只是打開, 傳遞參數, 接收到指定的返回結果,僅此而已。
對於常用的公共對話框, 我們可以封裝成擴展方法, 以便於我們在應用程序的任何位置可以使用到它, 所以, 通常我們可以考慮以下做法:

public static void ShowNotification(this IDialogService dialogService,
string message, Action<IDialogResult> callback)
{
var p = new DialogParameters();
p.Add("message", message);
dialogService.ShowDialog(“NotificationDialog", p, callback);
}

結語

本系列教程講解了Prism當中的以下功能:

  • 如何創建Prism應用程序以及使用VS擴展包
  • Region (區域)
  • Module (應用程序模塊化)
  • 視圖注入 (模塊如何使用依賴注入)
  • MVVM (MVVM如何使用)
  • Navigation (應用程序導航功能)
  • Dialog (對話框服務)

本系列課程為公益課程, 由作者痕跡(QQ:779149549)發起, 由50位小伙伴每人20元眾籌創作的課程, 其中包括文字版教程及視頻版教程。 本課程所有收入全部以C#開發者名義捐贈予第
三方的慈善機構。

參與者包含的內容:

  • 所有課程文字版存檔(md)
  • 所有課程視頻源文件
  • 所有課程PPT源文件

捐贈公示見視頻教程地址:
點擊觀看本系列教程

大感謝

由衷的感謝以下網友的大力支持, 沒有你們, 就沒有現在的這個系列課程, 也非常感謝每一位朋友的信任與認可, 能夠讓大家一起為社區、為社會做出一點微小的貢獻。

  1. 31849022(超級士兵): 100
  2. 554227643(深圳-c#-我是廢物) : 30
  3. 513994020(自橫): 50
  4. 275794764(上海-c# 沙羅鐵樹)
  5. 324563068(成都-C#-俺是肥貓)
  6. 276630126(東莞-C#-肖乓之)
  7. 574378328(廣州-C#-ροι囧rz)
  8. 15828571974(成都-C#-Mr.J)
  9. 1269720707(C#–安徽–卑微小徐)
  10. 1940070028(上海-C#-菜雞進階)
  11. 250429809(廣州-C#-真的假不)
  12. 452077349(合肥-C#-陳聰)
  13. 2584414674(北京-C#-韭菜)
  14. 523656448(北京-.NET-NOOB KILLER-接單)
  15. 1411719639(常州-C#-視覺小白)
  16. 943880339(上海-C#/工控-老丁)
  17. 1144389736(合肥-C#-中南)
  18. 749128070(北京-C#-上位機)
  19. 564229357(大連_Shadow_C# Win)
  20. 341818(英倫)
  21. 738367869(群主)
  22. 1409458062(北京-wpf-述不作)
  23. 914000741(昆明-C#-立青)
  24. 1247517355(東莞-C#-OZ)
  25. 123211521(易極智控)
  26. 1033566918(廣州-C#-小白)
  27. 1211566092(成都-C#-do)
  28. 956881848(惠州-C#-吳念真)
  29. 365466988(深圳-c#-Lu、)
  30. 454879105(杭州-.NET-賦予)
  31. 2603473237(柳州-C#-LastDance)
  32. 451598452(那年夏天)
  33. 164131387(山有木兮木有枝)
  34. 469453928(沈陽-.NET-Sky)
  35. 597606219(揚州-C#-石頭)
  36. 625297716(上海-C#-小白)
  37. 869351670(陳建生)
  38. 2425101801(杭州-C#-很好)
  39. 332933441(湖南-C#-夏日的風)
  40. 996771863(四川-C#-Bug專業戶)
  41. 15321733(深圳-C#-TM)
  42. 757957839(上海-C#-寶寶)
  43. 920986096(湖南-C#-蝸牛)
  44. 648923523(泉州-C#-白陸)
  45. 397756029(Tony.Chen)
  46. 524937203(成都-WPF-兔子)
  47. 969641993(寧波-C#-Glimmer)
  48. 292391438(山東-C#-彤彤)
  49. 2976961441(北京-WPF-飛行)
  50. 1580011388(北京-C#-XYJ)
  51. 619459516(◇緈福小妖◇)
  52. 121659440(貴州-C#-風雨)
  53. 3137245609(廣州-C#-響聲)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM