解决办法

新建一个类DialogServiceExtend,然后在再注册

    public class DialogServiceExtend : DialogService
{
public DialogServiceExtend(IContainerExtension containerExtension) : base(containerExtension)
{
} protected override void ConfigureDialogWindowEvents(IDialogWindow dialogWindow, Action<IDialogResult> callback)
{
Action<IDialogResult> requestCloseHandler = null;
requestCloseHandler = (o) =>
{
dialogWindow.Result = o;
dialogWindow.Close();
}; RoutedEventHandler loadedHandler = null;
loadedHandler = (o, e) =>
{
dialogWindow.Loaded -= loadedHandler;
GetDialogViewModel(dialogWindow).RequestClose += requestCloseHandler;
};
dialogWindow.Loaded += loadedHandler; CancelEventHandler closingHandler = null;
closingHandler = (o, e) =>
{
if (!GetDialogViewModel(dialogWindow).CanCloseDialog())
{
callback?.Invoke(dialogWindow.Result);
e.Cancel = true;
}
};
dialogWindow.Closing += closingHandler; EventHandler closedHandler = null;
closedHandler = (o, e) =>
{
dialogWindow.Closed -= closedHandler;
dialogWindow.Closing -= closingHandler;
GetDialogViewModel(dialogWindow).RequestClose -= requestCloseHandler; GetDialogViewModel(dialogWindow).OnDialogClosed(); if (dialogWindow.Result == null)
dialogWindow.Result = new DialogResult(); callback?.Invoke(dialogWindow.Result); dialogWindow.DataContext = null;
dialogWindow.Content = null;
};
dialogWindow.Closed += closedHandler;
} private IDialogAware GetDialogViewModel(IDialogWindow dialogWindow)
{
return (IDialogAware)dialogWindow.DataContext;
}
}

注册

    protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.RegisterSingleton<IDialogService, DialogServiceExtend>();
}

然后你就可以发现callback可以生效了

解决Prism中对话框服务中对话框开启时回调函数不会触发的问题的更多相关文章

  1. PHP – 在类中使用array_filter时回调函数的问题

    了一个类处理好友,其中有一个方法用来同步好友,而这个方法中需要从微博传来的关注列表和粉丝列表中,找到互相关注的用户,记录一下经验,主要还是关于回调函数. 按照我最初的理解,这样写就可以了 privat ...

  2. node中处理异步常用的方法,回调函数和events 模块处理异步

    // npm install -g supervisor supervisor http.js就可以实现热更新的效果 //引入http模块 var http = require('http'); va ...

  3. WIN7中组件服务中的DCOM配置找不到Microsoft Excel应用程序的解决办法

    转自:http://blog.csdn.net/lploveme/article/details/8215265 在运行栏中输入命令:dcomcnfg,打开组件服务管理窗口,但是却发现找不到Micro ...

  4. GDAL库中WFS服务中含有中文不能获取数据的问题

    GDAL库中目前提供了对WFS服务发布的数据进行获取,目前发现对于中文的服务名称或者图层名为中文,GDAL不能正确识别.通过调试发现,其原因有下面两点: 1.输入的URL路径没有使用UTF8编码而从网 ...

  5. Java中多线程服务中遇到的Redis并发问题?

    背景: 一个中小型H5游戏 核心错误信息: (1): java.lang.ClassCastException: [B cannot be cast to java.lang.Long at redi ...

  6. Jquery UI 中的datepicker() ,获取日期后的回调函数onClose()

    <head> //引入相关的css/js <link rel="stylesheet" href="//code.jquery.com/ui/1.10. ...

  7. spring boot中使用AJAX请求,并将回调函数赋值给input输入框

    HTML: <script>/* $(document).ready(function(){} 页面加载事件,加载完页面之后执行 */ $(document).ready(function ...

  8. geoserver中WMS服务详细说明

    官方geoserver中WMS服务中几种操作的API的详细说明地址: http://docs.geoserver.org/stable/en/user/services/wms/reference.h ...

  9. Android服务之混合方式开启服务

    引言 前面介绍过了Android服务的两种开启方式:Start方式可以让服务在后台运行:bind方式能够调用到服务中的方法. 在实际的开发工作中,有很多需求是:既要在后台能够长期运行,又要在服务中操作 ...

  10. vue中使用iview表单验证时this指针问题

    需求 使用iview,在提交时对值b进行验证,使其不能大于值a 实现 <Form ref="config" :model="config" :rules= ...

随机推荐

  1. C#开发的股票盯盘小工具——摸鱼助手,附源码

    写了个盯盘小工具,最近发现很多炒股的小伙伴,上班期间看手机频繁是不是影响不好?电脑上打开交易软件,那影响是不是更不好?所以我就写了个小工具,给大家"摸鱼"用.虽然是摸鱼用,但是平常 ...

  2. Android桌面Launcher源码浅析

    在Android启动过程-万字长文(Android14)中介绍了Android系统的启动过程,本篇文章将继续介绍桌面应用Launcher. 一.Launcher介绍 在Android启动过程-万字长文 ...

  3. vue devtools工具安装 Vue实现数据绑定的原理

    通过chrome中的谷歌插件商店安装Vue Devtools工具,此工具帮助我们进行vue数据调试所用,一定要安装. https://chrome.google.com/webstore?utm_so ...

  4. P1737

    problem \(\text{task 1}\) 要求: 输入:\(a,b\). 输出:\(-2a-2b\). 数据范围:\(|a|,|b| \le 10^9\). 做法: 先把 \(-2\) 提出 ...

  5. 微博Lite版安装

    微博Lite版安装 前置条件,需要使用chrome,或chromium内核的浏览器. 1.浏览器输入:https://m.weibo.cn/ 2.在地址栏最右侧点击安装. --

  6. .net framework 使用Apollo 配置中心

    参照了:https://www.cnblogs.com/xichji/p/11324893.html Apollo默认有一个"SampleApp"应用,"DEV" ...

  7. C#中路径说明

    路径中一个点和两个点的区别 ./    表示当前目录,如"./jquery-1.3.2.min.js",也可以去掉"./",如"jquery-1.3. ...

  8. vue排行榜 加单位

  9. Java邮件发送解决ssl及邮件中文乱码

    Java邮件发送解决ssl及邮件中文乱码 org.apache.commons.mail.EmailException: Sending the email to the following serv ...

  10. .NET 个人博客-给文章添加上标签

    个人博客-给文章添加上标签 优化计划 置顶3个且可滚动或切换 推荐改为4个,然后新增历史文章,将推荐的加载更多放入历史文章,按文章发布时间降序排列. 标签功能,可以为文章贴上标签 推荐点赞功能 本篇文 ...