基本用法

1、添加一个用户控件(作为弹出窗口的内容)—>进行注册RegisterDialog
2、添加对应的ViewModel—>实现IDialogAware接口
3、通过注入的IDialogService方法Show/ShowDialog打开弹窗

详细用法

1、添加一个用户控件(作为弹出窗口的内容)
2、通过RegisterDialog注册窗体

        public void RegisterTypes(IContainerRegistry containerRegistry){containerRegistry.RegisterDialog<UserEditView>();}

3、ViewModel实现IDialogAware接口

    public class UserEditViewModel : IDialogAware{public string Title => "信息编辑";public event Action<IDialogResult> RequestClose;public bool CanCloseDialog(){return true;}public void OnDialogClosed(){}public void OnDialogOpened(IDialogParameters parameters){}}

4、通过IDialogService接口 Show/ShowDialog 方法调用对话框,通过注册时候的名称进行打开, 并且可以传递参数, 以及回调方法(主要用于返回对话框的返回结果)

            OpenDialogCommand = new DelegateCommand(() =>{DialogParameters param = new DialogParameters();// View的注册名称 - 参数键值对 - 弹窗回调 - 指定弹出窗口的注册名称dialogService.ShowDialog("UserEditView", param,(result) =>{});});

弹窗设置样式

通过Dialog.WindowStyle在UserControl中直接设置样式
<UserControl x:Class="SysModule.Views.UserEditView"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:SysModule.Views"xmlns:prism="http://prismlibrary.com/"prism:ViewModelLocator.AutoWireViewModel="True"mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800"><prism:Dialog.WindowStyle><Style TargetType="Window"><Setter Property="WindowStyle" Value="None"/><Setter Property="Width" Value="500"/><Setter Property="Height" Value="300"/><Setter Property="SizeToContent" Value="Manual"/></Style></prism:Dialog.WindowStyle><Grid ><TextBlock Text="UserEdit" FontSize="30"/></Grid>
</UserControl>
自定义弹窗的样式,可全局使用

1、首先需要添加一个Windows窗体,WindowStartupLocation="CenterOwner"可将窗体弹出在父窗体中间

<Window x:Class="Shell.DialogWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:Shell"mc:Ignorable="d" WindowStartupLocation="CenterOwner"Title="自定义弹窗" Height="350" Width="500"><Grid></Grid>
</Window>

2、窗体后台代码中继承IDialogWindow接口

    /// <summary>/// DialogWindow.xaml 的交互逻辑/// </summary>public partial class DialogWindow : Window, IDialogWindow{public DialogWindow(){InitializeComponent();}public IDialogResult Result { get; set; }}

3、将Windows窗体在App中进行全局注册,如果注册时为DialogWindow指定别名为"DialogWindow",那么通过IDialogService打开窗体时需指定窗体的名称

        protected override void RegisterTypes(IContainerRegistry containerRegistry){//未指定名称containerRegistry.RegisterDialogWindow<DialogWindow>();//指定了名称为"DialogWindow"//containerRegistry.RegisterDialogWindow<DialogWindow>("DialogWindow");}
            OpenDialogCommand = new DelegateCommand(() =>{DialogParameters param = new DialogParameters();// View的注册名称 - 参数键值对 - 弹窗回调 - 指定弹出窗口的注册名称dialogService.ShowDialog("UserEditView", param,(result) =>{},"DialogWindow");});

WPF Prism框架之Dialog相关推荐

  1. WPF Prism框架

    Prism框架 1.关于Prism框架 ​ 官方地址:http://prismlibrary.com ​ 官方源码:https://github.com/PrismLibrary/Prism ​ 版本 ...

  2. Prism框架(一)——概述Prism框架的设计目的是用来帮助构建丰富、灵活、易维护的WPF和Si...

    Si Prism框架(一)--概述Prism框架的设计目的是用来帮助构建丰富.灵活.易维护的WPF和Si 提问者:mfksnr120(ID:187460) | 悬赏 0.0 希赛币 | 回答数:0 | ...

  3. .NET Core 3 WPF MVVM框架 Prism系列之事件聚合器

    本文将介绍如何在.NET Core3环境下使用MVVM框架Prism的使用事件聚合器实现模块间的通信 一.事件聚合器  在上一篇 .NET Core 3 WPF MVVM框架 Prism系列之模块化 ...

  4. c#事件的发布-订阅模型_NET Core 3 WPF MVVM框架 Prism系列之事件聚合器

    本文将介绍如何在.NET Core3环境下使用MVVM框架Prism的使用事件聚合器实现模块间的通信 一.事件聚合器#  在上一篇 .NET Core 3 WPF MVVM框架 Prism系列之模块化 ...

  5. WPF的Prism框架简介

    什么是Prism Prism是一个用于在 WPF.Xamarin Form.Uno 平台和 WinUI 中构建松散耦合.可维护和可测试的 XAML 应用程序框架. Prism是一个用于在WPF.Xam ...

  6. WPF(七) Prism框架基本特性

    参考文档: Prism 官方文档 Prism Library Prism GitHub 地址 GitHub - PrismLibrary/Prism 大佬博客 Prism合集 - 随笔分类 - 痕迹g ...

  7. 【WPF】Prism框架基础

    Prism框架: 初识: 我们创建一个基于net5.0的WPF应用程序 创建完之后在VS里面添加相关的包 修改app继承的基类 public partial class App : PrismAppl ...

  8. Prism框架研究(一)

    从今天起开始写一个Prism框架的学习博客,今天是第一篇,所以从最基本的一些概念开始学习这个基于MVVM的框架的学习,首先看一下Prism代表什么,这里引用一下比较官方的英文解释来看一下:Prism ...

  9. WPF PRISM开发入门一( 初始化PRISM WPF程序)

    原文:WPF PRISM开发入门一( 初始化PRISM WPF程序) 这篇博客将介绍在WPF项目中引入PRISM框架进行开发的一些基础知识.目前最新的PRISM的版本是Prism 6.1.0,可以在G ...

最新文章

  1. 随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )的公式对比、实现对比
  2. 【转】Ubuntu 安装截图工具Shutter,并设置快捷键 Ctrl+Alt+A
  3. TensorFlow的这些骚操作你都知道吗?
  4. linux python安装教程_Linux系统如何安装Python?新手教程
  5. matlab可以使用词云分析吗,利用豆瓣短评数据生成词云
  6. 学术会议 | 中国杭州举办——第21届国际语义网大会​ISWC2022 Call for Papers
  7. IDEA配置码云Gitee的使用详解
  8. 关于iOS原生条形码扫描,你需要注意的两三事
  9. 计算机网络技术练习,计算机网络技术基础各章节综合练习题及答案
  10. 51Nod-1136 欧拉函数
  11. 《自己动手写CPU》学习记录(1)——第1章
  12. linux中目录权限777,Linux文件和目录的777、755、644权限解释
  13. 【华为机试022】简单密码破解
  14. 非功能需求的6种类型
  15. 《Google软件工程》读书笔记
  16. vscode 无法输入输出
  17. 报表导出HTML格式怎么转换为EXCEL,使用html导出excel时的格式问题
  18. html网页打不开二级网页,遇到二级网页打不开怎么办 讲解二级页面打不开的处理方法...
  19. Linux中pushd和popd用法
  20. dnf 服务器维护时间表2015年,DNF2015年6月18日更新维护结束时间及内容介绍

热门文章

  1. java递归算法[32]
  2. Vue+Echarts实现中国地图的省市切换
  3. 算法提高 聪明的美食家
  4. liunx usb摄像头使用
  5. 计算机网flags,计算机网络原理实验_使用网络协议分析仪Wireshark
  6. 数据库系统概论(第五版 王珊 萨师煊 编著)
  7. 北大暑期课堂散心指南游记
  8. 工程伦理课后习题参考答案(清华网课)
  9. CSS中scope和scoped区别
  10. 海峰五笔试用体验,感觉上当受骗……