網站首頁 編程語言 正文
什么是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); }
原文鏈接:https://www.cnblogs.com/zh7791/p/14140920.html
相關推薦
- 2022-06-12 .Net?Core?3.1?Web?API基礎知識詳解(收藏)_實用技巧
- 2022-05-13 使用openmp為循環邏輯提速
- 2023-02-09 C++?類模板與成員函數模板示例解析_C 語言
- 2022-06-02 TensorFlow實現簡單線性回歸_python
- 2022-08-30 python在文件中倒序查找個關鍵詞
- 2023-01-20 C/C++實現獲取系統時間的示例代碼_C 語言
- 2022-09-21 Flutter實現底部和頂部導航欄_Android
- 2022-05-25 <C++>深淺拷貝與初始化列表技巧你真的會了嗎
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支