WPF Prism框架之Dialog
基本用法
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相关推荐
- WPF Prism框架
Prism框架 1.关于Prism框架 官方地址:http://prismlibrary.com 官方源码:https://github.com/PrismLibrary/Prism 版本 ...
- Prism框架(一)——概述Prism框架的设计目的是用来帮助构建丰富、灵活、易维护的WPF和Si...
Si Prism框架(一)--概述Prism框架的设计目的是用来帮助构建丰富.灵活.易维护的WPF和Si 提问者:mfksnr120(ID:187460) | 悬赏 0.0 希赛币 | 回答数:0 | ...
- .NET Core 3 WPF MVVM框架 Prism系列之事件聚合器
本文将介绍如何在.NET Core3环境下使用MVVM框架Prism的使用事件聚合器实现模块间的通信 一.事件聚合器 在上一篇 .NET Core 3 WPF MVVM框架 Prism系列之模块化 ...
- c#事件的发布-订阅模型_NET Core 3 WPF MVVM框架 Prism系列之事件聚合器
本文将介绍如何在.NET Core3环境下使用MVVM框架Prism的使用事件聚合器实现模块间的通信 一.事件聚合器# 在上一篇 .NET Core 3 WPF MVVM框架 Prism系列之模块化 ...
- WPF的Prism框架简介
什么是Prism Prism是一个用于在 WPF.Xamarin Form.Uno 平台和 WinUI 中构建松散耦合.可维护和可测试的 XAML 应用程序框架. Prism是一个用于在WPF.Xam ...
- WPF(七) Prism框架基本特性
参考文档: Prism 官方文档 Prism Library Prism GitHub 地址 GitHub - PrismLibrary/Prism 大佬博客 Prism合集 - 随笔分类 - 痕迹g ...
- 【WPF】Prism框架基础
Prism框架: 初识: 我们创建一个基于net5.0的WPF应用程序 创建完之后在VS里面添加相关的包 修改app继承的基类 public partial class App : PrismAppl ...
- Prism框架研究(一)
从今天起开始写一个Prism框架的学习博客,今天是第一篇,所以从最基本的一些概念开始学习这个基于MVVM的框架的学习,首先看一下Prism代表什么,这里引用一下比较官方的英文解释来看一下:Prism ...
- WPF PRISM开发入门一( 初始化PRISM WPF程序)
原文:WPF PRISM开发入门一( 初始化PRISM WPF程序) 这篇博客将介绍在WPF项目中引入PRISM框架进行开发的一些基础知识.目前最新的PRISM的版本是Prism 6.1.0,可以在G ...
最新文章
- 随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )的公式对比、实现对比
- 【转】Ubuntu 安装截图工具Shutter,并设置快捷键 Ctrl+Alt+A
- TensorFlow的这些骚操作你都知道吗?
- linux python安装教程_Linux系统如何安装Python?新手教程
- matlab可以使用词云分析吗,利用豆瓣短评数据生成词云
- 学术会议 | 中国杭州举办——第21届国际语义网大会​ISWC2022 Call for Papers
- IDEA配置码云Gitee的使用详解
- 关于iOS原生条形码扫描,你需要注意的两三事
- 计算机网络技术练习,计算机网络技术基础各章节综合练习题及答案
- 51Nod-1136 欧拉函数
- 《自己动手写CPU》学习记录(1)——第1章
- linux中目录权限777,Linux文件和目录的777、755、644权限解释
- 【华为机试022】简单密码破解
- 非功能需求的6种类型
- 《Google软件工程》读书笔记
- vscode 无法输入输出
- 报表导出HTML格式怎么转换为EXCEL,使用html导出excel时的格式问题
- html网页打不开二级网页,遇到二级网页打不开怎么办 讲解二级页面打不开的处理方法...
- Linux中pushd和popd用法
- dnf 服务器维护时间表2015年,DNF2015年6月18日更新维护结束时间及内容介绍