Prism-对话服务
当我们点击某些按钮 弹出弹窗 有某些我们想要的功能进行选择 这就是基本的对话服务
示例如下
新增一个用户控件ViewC
简单设计了一个弹窗
然后在ModelAProfile类里注册弹窗
containerRegistry.RegisterForNavigation<ViewC>();
把之前用的regionManager区域管理器两行代码删掉
还有他的方法
在ViewModels里面使用prism中的对话服务IDialog service 然后创建字段
private readonly IDialogService dialogService;public DelegateCommand<string> OpenCommand { get; private set; }public ViewModel(IDialogService dialogService){OpenCommand = new DelegateCommand<string>(Open);this.dialogService = dialogService;}
private void Open(string obj){DialogParameters keys = new DialogParameters();keys.Add("Title", " 测试弹窗");dialogService.ShowDialog(obj,keys,callback=>{//回调结果if (callback.Result == ButtonResult.OK){string result = callback.Parameters.GetValue<string>("Value");}//接受结果} );}
接收这个参数
public void OnDialogOpened(IDialogParameters parameters){Title = parameters.GetValue<string>("Title");//接收到这个参数}
在ViewModel里面创建ViewCViewModel创建一个继承于IDialogAware的类 然后实现这个接口的方法
再跟ViewC进行上下文绑定
containerRegistry.RegisterForNavigation<ViewC, ViewAViewModel>();
两个按钮进行绑定
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Margin="10"Grid.Row="2"><Button Content="取消" Height="50" Width="100" Margin="10"FontSize="30"Command="{Binding CancelCommand}"/><Button Content="确定"Command="{Binding SaveCommand}"Height="50"Width="100"FontSize="30"Margin="10"/></StackPanel>
ModelA的整段代码
namespace ModuleA
{public class ViewCViewModel : IDialogAware{//给按钮加功能//取消命令public DelegateCommand CancelCommand { get; set; } //保存命令public DelegateCommand SaveCommand { get; set; }public ViewCViewModel(){CancelCommand = new DelegateCommand(Cancel);SaveCommand = new DelegateCommand(Save);}private void Save(){OnDialogClosed();}private void Cancel(){RequestClose?.Invoke(new DialogResult(ButtonResult.No));}public string Title { get; set; }public event Action<IDialogResult> RequestClose;//请求关闭public bool CanCloseDialog()//允许关闭{return true;}public void OnDialogClosed(){DialogParameters keys = new DialogParameters();keys.Add("Vaule", "Hello");//返回的结果,名字为Value的变量 值为hello RequestClose?.Invoke(new DialogResult(ButtonResult.OK, keys));//调用Invoke来确定对话中按钮结果的实现 确定即发生}public void OnDialogOpened(IDialogParameters parameters){Title = parameters.GetValue<string>("Title");//接收到这个参数}}
}
主业务代码中的ViewModels的代码
namespace Prism.viweModels
{public class ViewModel : BindableBase{private readonly IDialogService dialogService;public DelegateCommand<string> OpenCommand { get; private set; }public ViewModel(IDialogService dialogService){OpenCommand = new DelegateCommand<string>(Open);this.dialogService = dialogService;}private void Open(string obj){DialogParameters keys = new DialogParameters();keys.Add("Title", " 测试弹窗");dialogService.ShowDialog(obj,keys,callback=>{//回调结果if (callback.Result == ButtonResult.OK){string result = callback.Parameters.GetValue<string>("Value");}//接受结果} );}}
}
实现结果 确定得到一个叫做Vaule的变量 值为string类型的hello
对话服务要与整个业务代码毫无关系,都是使用依赖注入来实现功能
降低程序模块之间的耦合性
Prism-对话服务相关推荐
- 今天来聊一聊情感对话服务机器人
随着人工智能技术的不断进步和应用,情感对话服务机器人成为了一种新型的人机交互方式.情感对话服务机器人可以实现基于自然语言处理技术的智能交互,让计算机更加接近人类的思维和行为模式.在本文中,我们将探讨情 ...
- Prism:Uber 的 Presto 查询网关服务
本文来自3月24日举办的 PrestoCon Day 2021.作者 Hitarth Trivedi,Uber 的软件工程师. Prism 是 Uber 所有 Presto 查询的网关服务(gatew ...
- WPF Prism.DryIoc(4)
当前介绍的是prism Dryloc中的对话服务 能在程序中调用窗体弹窗最大程度的降低程序和视图之间的偶和性 步骤1 在Nuget包管理中下载Prism Dryloc 包 步骤2 在App.cs中设置 ...
- 【WPF】Prism框架基础
Prism框架: 初识: 我们创建一个基于net5.0的WPF应用程序 创建完之后在VS里面添加相关的包 修改app继承的基类 public partial class App : PrismAppl ...
- audio 小程序 放大_码code | 小程序新能力释放,人人都能拥有对话机器人
当用户在小程序内发起对话,你是在后台抓紧安排人工回复吗? 由于等待回复时间过长,用户产生不满并弃用了你的小程序. "秒回"是对话的基本要求,及时回复才能给到用户尊重和被重视感.然而 ...
- 为新研究准备好一块用武之地:最全任务型对话数据调研
合适的数据集或者语料是优秀的自然语言研究工作的基础,然而找寻合适的数据集通常是一件耗时耗力的工作.这时候一份优质的数据集汇总就能帮助科研人员,在研究开始的时候事半功倍.这篇文章就向你介绍一份优质的数据 ...
- 如何打造“智能助理”?阿里对话开发平台这样做
简介: 一个合格的智能助理能够帮你预约开会时间,处理日常办公需求,还能打电话提醒你要还信用卡了,作为用户或者消费者,我们已经越来越习惯对话机器人提供的各色服务.但对于企业来讲,搭建提供这些服务的对话机 ...
- 最新任务型对话数据集大全
合适的数据集或者语料是优秀的自然语言研究工作的基础,然而找寻合适的数据集通常是一件耗时耗力的工作.这时候一份优质的数据集汇总就能帮助科研人员,在研究开始的时候事半功倍.这篇文章就向你介绍一份优质的数据 ...
- javaee 中文帮助文档_从中游公司跳槽阿里必知:K8s、Nginx、Redis、微服务面试文档...
前言 随着时代的进步和发展,无论哪份工作都不能因循守旧,不去创新或者去吸收新的知识,尤其是Java开发的工作者,在十几年之前,很多人都已经掌握了Java的很多知识,但是如今如果只会SSM的小伙伴,已经 ...
最新文章
- C++11中std::lock_guard的使用
- [Google Guava] 使用和避免null
- linux 挂载有数据硬盘分区,linux下磁盘分区、挂载知多少
- linux ftp用户指定多个目录,linux ftp服务器下用户限制目录的方法
- css根据屏幕大小切换样式
- WINDOWS下DOCKER安装后卡在boot2docker.iso无法启动
- python 邮箱验证_在Django中进行用户注册和邮箱验证的方法
- android游戏开发方向初探
- SysCeo_Win7_Classic_V7.8_32位+64位(6in1)纯净经典版
- 霍尔编码器原理及测速--PID—arduino
- java中 是什么意思_java中?:是什么意思
- Nice UI - Hacked.io
- 手机老是收不到短信验证码?我来告诉你为什么!
- android仿支付宝弹窗,实现支付宝支付从底部弹窗效果
- JSON字符串--对象之间的相关转换
- 电机编码器调零步骤_什么是调零对位?伺服电机编码器调零对位方法
- IQOO换鸿蒙系统,1998 iQOO 845版明天发?| 华为自研系统鸿蒙在全球注册商标
- Windows更新策略配置
- 大学生开学需要准备哪些数码产品、五款大学生必买的电子产品
- MATE9系统升级提示服务器,华为Mate9用ADB调试功能禁用系统更新去右上角提示更新的数字角标1...
热门文章
- 计算机毕业设计springboot进口零食销售网站74r3o源码+系统+程序+lw文档+部署
- 微信JSSDK使用(获取access_token和jsapi_ticket及后续的完整方法)
- java与前端的区别_java与前端的区别
- linux打压缩包去掉某个文件夹,linux tar压缩排除某个文件夹的方法
- python通过经纬度算出距离_Python中如何利用经纬度进行距离计算
- php编程日均增长率计算,2018年事业单位职业测重要知识点:年均增长率的计算...
- 手机地图哪个好?从老虎地图说开去(转帖)
- 适合学生自我提升的10个好网站,建议收藏
- be备份ad_AD域控的备份及还原
- Python实验1 流程控制