当前位置: 首页 > news >正文

WPF关于打开新窗口获取数据的回调方法的两种方式

一种基于消息发送模式

一种基于回调机制

基于消息发送模式

父页面定义接收的_selectedPnNumberStandarMsg保证是唯一

 Messenger.Default.Register<PlateReplaceApplyModel>(this, _selectedPnNumberStandarMsgToken, platePnNumberModel =>
            {
                if (platePnNumberModel == null) return;
                Item.ProductNumberId = platePnNumberModel.ProductNumberId;
                Item.ProductNumber = platePnNumberModel.ProductNumber;
                Item.IndustryCategory = platePnNumberModel.IndustryCategory;
                Item.ProductName = platePnNumberModel.ProductName;
                GetPartChangeByProductNumberId(platePnNumberModel.ProductNumberId);
                //getPartChangeByProductNumberId(platePnNumberModel.ProductNumberId);
                RaisePropertyChanged(() => Item);
            });

子页面

获取数据后的发送父页面

        public RelayCommand SelectionChangeCommand
        {
            get
            {
                return new RelayCommand(() =>
                {
                    if (CurrentItem == null) return;
                    Messenger.Default.Send(CurrentItem, PlateReplaceApplyFormVM._selectedPnNumberStandarMsgToken);
                    CloseWin();
                }, () => CurrentItem != null);
            }
        }

第二种回调

 <c1:Column Header="销售订单号" Binding="{Binding SalesOrderNo,Mode=TwoWay}" Width="180" ColumnName="SalesOrderNo"  >
                                <c1:Column.CellTemplate>
                                    <DataTemplate>
                                        <Grid>
                                            <Grid.ColumnDefinitions>
                                                <ColumnDefinition Width="*"/>
                                                <ColumnDefinition Width="Auto"/>
                                            </Grid.ColumnDefinitions>
                                    <TextBlock Padding="3,0,3,0" Text="{Binding SalesOrderNo,Mode=TwoWay}"  TextWrapping="Wrap" />
                                    <Button Grid.Column="1" Style="{StaticResource FlexGrid-SelectBtn}" Name="BtnSalesOrderItem" Click="BtnSalesOrderNo_Click" />
                                        </Grid>
                                    </DataTemplate>
                                </c1:Column.CellTemplate>
                                <c1:Column.CellEditingTemplate>
                                    <DataTemplate>
                                        <c1:C1MaskedTextBox Text="{Binding SalesOrderNo, Mode=TwoWay, ValidatesOnExceptions=True, ValidatesOnDataErrors=True, NotifyOnValidationError=True}" TextWrapping="Wrap"/>
                                    </DataTemplate>
                                </c1:Column.CellEditingTemplate>
                            </c1:Column>

BtnRelationId_Click触发

     private void BtnRelationId_Click(object sender, RoutedEventArgs e)
        {
            var vm = DataContext as PlateReplaceApplyFormVM;
            if (vm == null)
            {
                return;
            }
            var testInfo = CfgRiskReviewItem.HitTest(Mouse.GetPosition(CfgRiskReviewItem));
            if (testInfo.Row > -1)
            {
                var selectedItem = CfgRiskReviewItem.Rows[testInfo.Row].DataItem as PlateReplaceRiskReviewModel;
                vm.CurrentRiskReviewItem = selectedItem;
                //五种不同的关联方式跳转不同的页面关联.目前只处理客户投诉RelationType=1为客诉
                if (selectedItem.RelationType == 1&& selectedItem.RelationWay==1)
                {
                    vm.SelectComplaintsSubject();
                }
            }
        }

   //选择父页面vm
        public void SelectComplaintsSubject()
        {
            if (CurrentRiskReviewItem != null)
            {
               

                string action = "选择客诉";
                var custimerWin = PageRouter.GetWindow<ComplaintsCodeSelectedFormWin>(action);
                var vm = AutofacInstaceFactory.GetInstance<ComplaintsCodeSelectedFormVM>();
                vm.ProductNumber = Item.ProductNumberOutVer;
                var wheres = new List<QueryWhere>();
                vm.Init1(CurrentItem =>
                {
                    if (CurrentItem != null)
                    {

                        CurrentRiskReviewItem.RelationField = CurrentItem.Code;
                        CurrentRiskReviewItem.ReviewResult = 1;
                        RaisePropertyChanged(() => CurrentRiskReviewItem);
                    }
                });
                custimerWin.DataContext = vm;
                custimerWin.ShowDialog();
            }
        }

子页面vm 回传对象CurrentItem

        public RelayCommand SelectionChangeCommand
        {
            get
            {
                return new RelayCommand(() =>
                {
                    if (_callBack != null)
                    {
                        _callBack(CurrentItem);
                        CloseWin();
                    }
                }, () => CurrentItem != null);
            }
        }

相关文章:

WPF关于打开新窗口获取数据的回调方法的两种方式

一种基于消息发送模式 一种基于回调机制 基于消息发送模式 父页面定义接收的_selectedPnNumberStandarMsg保证是唯一 Messenger.Default.Register<PlateReplaceApplyModel>(this, _selectedPnNumberStandarMsgToken, platePnNumberModel > { …...

复杂网络(四)

一、规则网络 孤立节点网络全局耦合网络&#xff08;又称完全网络&#xff09;星型网络一维环二维晶格 编程实践&#xff1a; import networkx as nx import matplotlib.pyplot as pltn 10 #创建孤立节点图 G1 nx.Graph() G1.add_nodes_from(list(range(n))) plt.figure(f…...

用MATLAB符号工具建立机器人的动力学模型

目录 介绍代码功能演示拉格朗日方法回顾求解符号表达式数值求解 介绍 开发机器人过程中经常需要用牛顿-拉格朗日法建立机器人的动力学模型&#xff0c;表示为二阶微分方程组。本文以一个二杆系统为例&#xff0c;介绍如何用MATLAB符号工具得到微分方程表达式&#xff0c;只需要…...

SQL优化与性能——数据库设计优化

数据库设计优化是提高数据库性能、确保数据一致性和支持业务增长的关键环节。无论是大型企业应用还是小型项目&#xff0c;合理的数据库设计都能够显著提升系统性能、减少冗余数据、优化查询响应时间&#xff0c;并降低维护成本。本章将深入探讨数据库设计中的几个关键技术要点…...

FPGA存在的意义:为什么adc连续采样需要fpga来做,而不会直接用iic来实现

FPGA存在的意义&#xff1a;为什么adc连续采样需要fpga来做&#xff0c;而不会直接用iic来实现 原因ADS111x连续采样实现连续采样功能说明iic读取adc的数据速率 VS adc连续采样的速率adc连续采样的速率iic读取adc的数据速率结论分析 FPGA读取adc数据问题一&#xff1a;读取adc数…...

我们来学mysql -- 事务之概念(原理篇)

事务的概念 题记一个例子一致性隔离性原子性持久性 题记 在漫长的编程岁月中&#xff0c;存在一如既往地贯穿着工作&#xff0c;面试的概念这类知识点&#xff0c;事不关己当然高高挂起&#xff0c;精准踩坑时那心情也的却是日了&#x1f436;请原谅我的粗俗&#xff0c;遇到B…...

基于特征子空间的高维异常检测:一种高效且可解释的方法

本文将重点探讨一种替代传统单一检测器的方法&#xff1a;不是采用单一检测器分析数据集的所有特征&#xff0c;而是构建多个专注于特征子集(即子空间)的检测器系统。 在表格数据的异常检测实践中&#xff0c;我们的目标是识别数据中最为异常的记录&#xff0c;这种异常性可以…...

看不见的彼方:交换空间——小菜一碟

有个蓝色的链接&#xff0c;先去看看两年前的题目的write up &#xff08;https://github.com/USTC-Hackergame/hackergame2022-writeups/blob/master/official/%E7%9C%8B%E4%B8%8D%E8%A7%81%E7%9A%84%E5%BD%BC%E6%96%B9/README.md&#xff09; 从别人的write up中了解到&…...

YOLO模型训练后的best.pt和last.pt区别

在选择YOLO模型训练后的权重文件best.pt和last.pt时&#xff0c;主要取决于具体的应用场景‌&#xff1a;‌12 ‌best.pt‌&#xff1a;这个文件保存的是在训练过程中表现最好的模型权重。通常用于推理和部署阶段&#xff0c;因为它包含了在验证集上表现最好的模型权重&#x…...

Pareidoscope - 语言结构关联工具

文章目录 关于 Pareidoscope安装使用方法输入格式语料库查询 将语料库转换为 SQLite3 数据库两种语言结构之间的关联简单词素分析关联共现和伴随词素分析相关的更大结构可视化关联结构 关于 Pareidoscope Pareidoscope 是一组 用于确定任意语言结构之间 关联的工具&#xff0c…...

GPT(Generative Pre-trained Transformer) 和 Transformer的比较

GPT&#xff08;Generative Pre-trained Transformer&#xff09; 和 Transformer 的比较 flyfish 1. Transformer 是一种模型架构 Transformer 是一种通用的神经网络架构&#xff0c;由 Vaswani 等人在论文 “Attention Is All You Need”&#xff08;2017&#xff09;中提…...

软件无线电(SDR)的架构及相关术语

今天简要介绍实现无线电系统调制和解调的主要方法&#xff0c;这在软件定义无线电(SDR)的背景下很重要。 外差和超外差 无线电发射机有两种主要架构——一种是从基带频率直接调制到射频频率&#xff08;称为外差&#xff09;&#xff0c;而第二种超外差是通过两个调制阶段来实…...

Python将Excel文件转换为JSON文件

工作过程中,需要从 Excel 文件中读取数据,然后交给 Python 程序处理数据,中间需要把 Excel 文件读取出来转为 json 格式,再进行下一步数据处理。 这里我们使用pandas库,这是一个强大的数据分析工具,能够方便地读取和处理各种数据格式。需要注意的是还需要引入openpyxl库,…...

排序算法之选择排序篇

思想&#xff1a; 每次从未排序的部分找出最小的元素&#xff0c;将其放到已排序部分的末尾 从数据结构中找到最小值&#xff0c;放到第一位&#xff0c;放到最前面&#xff0c;之后再从剩下的元素中找出第二小的值放到第二位&#xff0c;以此类推。 实现思路&#xff1a; 遍…...

sizeof和strlen区分,(好多例子)

sizeof算字节大小 带\0 strlen算字符串长度 \0之前...

A050-基于spring boot物流管理系统设计与实现

&#x1f64a;作者简介&#xff1a;在校研究生&#xff0c;拥有计算机专业的研究生开发团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339; 赠送计算机毕业设计600…...

[自然语言处理] NLP-RNN及其变体-干货

一、认识RNN模型 1 什么是RNN模型 RNN(Recurrent Neural Network), 中文称作循环神经网络, 它一般以序列数据为输入, 通过网络内部的结构设计有效捕捉序列之间的关系特征, 一般也是以序列形式进行输出. 一般单层神经网络结构: RNN单层网络结构: 以时间步对RNN进行展开后的单层…...

Elasticsearch ILM 索引生命周期管理讲解与实战

ES ILM 索引生命周期管理讲解与实战 Elasticsearch ILM索引生命周期管理:深度解析与实战演练1. 引言1.1 背景介绍1.2 研究意义2. ILM核心概念2.1 ILM的四个阶段2.1.1 Hot阶段2.1.2 Warm阶段2.1.3 Cold阶段2.1.4 Delete阶段3. ILM实战指南3.1 定义ILM策略3.1.1 创建ILM策略3.1.…...

重塑视频新语言,让每一帧都焕发新生——Video-Retalking,开启数字人沉浸式交流新纪元!

模型简介 Video-Retalking 模型是一种基于深度学习的视频再谈话技术&#xff0c;它通过分析视频中的音频和图像信息&#xff0c;实现视频角色口型、表情乃至肢体动作的精准控制与合成。这一技术的实现依赖于强大的技术架构和核心算法&#xff0c;特别是生成对抗网络&#xff0…...

联想Lenovo SR650服务器硬件监控指标解读

随着企业IT架构的复杂性和业务需求的增长&#xff0c;服务器的稳定运行变得至关重要。联想Lenovo SR650服务器以其高性能和稳定性&#xff0c;在各类应用场景中发挥着关键作用。为了保障服务器的稳定运行&#xff0c;监控易作为一款专业的IT基础设施监控软件&#xff0c;为联想…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲&#xff1a;核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用&#xff0c;还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...