VM访问View(Interaction)

引言

ViewModel访问View的场景非常常见,比如打开关闭窗口,访问剪切板等等,想操作前端View的一些功能和属性必须要View的引用。这里介绍一种非常高效的方式与View进行交互。当然有很多方式,比如回调函数、CommunityToolkit.MVVM的Messenger等

1、Interaction

相当于统一格式了,支持任意消息类型订阅处理。包含入参和返回值

public class Interaction<TIn, TOut> { private Func<TIn, Task<Tout>>? _handler; public void RegisterHandler(Func<TIn, Task<TOut>> handler) { ArgumentNullException.ThrowIfNulL(handler); handler = handler; } public async Task<Tout> Handle(TIn input) { if(handler =null) throw new InvalidoperationException("No handler registered."); return await _handler(input); } } public readonly struct Unit { public static readonly Unit Default = default; public override int GetHashCode() => 0; public override bool Equals(object? obj) => obj is Unit; }

1.1、VM中使用

这样再在ViewModel中声明一个实例使用:

public Interaction<Unit,string> RequestMessageInteraction{get;} = new(); [RelayCommand] private async Task UseInteraction() { IsBusy = true; Message = await RequestMessageInteraction.Handle(Unit.Default); IsBusy = false; }

1.2、View中订阅

public MainWindow() { InitializeComponent(); var viewModel = new MainViewModel(); this.DataContext = viewModel; viewModel.RequestMessageInteraction.RegisterHandler(async _ => { await Task.Delay(2000); return "Hello from MainWindow with Interaction!"; }); }

一般通过依赖注入进行VM的实例设置,这里简单实例化了一个MainViewModel。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1206614.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2026必备!本科生论文写作TOP8 AI工具测评

2026必备&#xff01;本科生论文写作TOP8 AI工具测评 2026年本科生论文写作工具测评&#xff1a;为什么需要一份权威榜单&#xff1f; 随着人工智能技术的不断进步&#xff0c;越来越多的本科生开始借助AI工具辅助论文写作。然而&#xff0c;面对市场上琳琅满目的工具&#x…

我们是怎么用Sealos把新项目上线周期从3周压到3天的

三周到三天,听起来像是标题党,但这确实是我们团队过去半年的真实经历。 先说结论:时间都浪费在哪了 拆解一下原来3周的流程:环节 传统耗时 卡在哪申请服务器资源 3-5天 走审批、等采购、排队分配搭建基础环境 2-3天…

一道“找数”的题,为什么能成为算法世界的常青树?

一道“找数”的题,为什么能成为算法世界的常青树? 从 Missing Number 说起 一、引子:这题你肯定见过,但你真的“理解”了吗? 很多人第一次见到这道题,心里都会冒出一句话: “这也叫算法题?小学数学吧?” 题目很简单: 给你一个包含 0 ~ n 中 n 个不同数字 的数组, …

仪器仪表智能化以及接入MES流程

目录 一、核心理念&#xff1a;从“哑终端”到“智能节点” 二、仪器仪表智能化的四个层级 三、接入MES的完整流程与架构 流程步骤详解&#xff1a; 四、关键技术要点与挑战 五、价值与收益 总结 仪器仪表智能化及接入MES&#xff08;制造执行系统&#xff09;是智能制造…

鲁班猫4用于工业设备测试检测可行性

目录 一、可行性分析&#xff08;为什么可行&#xff1f;&#xff09; 二、核心优势 三、面临的挑战与注意事项&#xff08;工业级应用的考量&#xff09; 四、典型的工业测试检测应用场景 五、选型与实施建议 鲁班猫4是一款极具性价比和灵活性的选择&#xff0c;特别适合…

扫描线杂题选做

P3863 对右端点扫描线,将修改操作差分成 \((l,v)\) 和 \((r+1,-v)\)。 那么每次操作对时间维上 \([i,q]\pm v\),询问即为教主的魔法。 #include <bits/stdc++.h> #define int long long #define rd read() usi…

完整教程:Agent近期记忆技术及落地实践整理

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

AOI CCD检测 数据上传程序 设计逻辑问题

1、后台稳定,WebAPI,数据库。 上传数据程序调用webapi,开发的webapi的dll的,判断逻辑要清楚,唯一一个变量判断。 不要变量判断不准,又找一个变量判断,即使 不得不多个变量判断,也要能模拟出情况判断(模拟错误场…

数学研究与AI架构知识图谱:AI应用架构师详解知识表示的数学原理与架构实现

数学研究与AI架构知识图谱:AI应用架构师详解知识表示的数学原理与架构实现 关键词:知识图谱(Knowledge Graph)、知识表示(Knowledge Representation)、数学原理(Mathematical Principles)、AI架构(AI Architecture)、向量空间模型(Vector Space Model)、图神经网络(Graph Ne…

大数据目录在数据治理中的关键作用与应用案例

大数据目录&#xff1a;数据治理的"导航系统"与数字化转型的关键基石 关键词 数据治理、大数据目录、数据资产管理、元数据管理、数据发现、数据血缘、数据质量、数据合规 摘要 在当今数据驱动的时代&#xff0c;组织面临着数据量爆炸式增长、数据孤岛严重、数据…

水电费水电费沈大哥发的给多少分

水电费水电费沈大哥发的给多少分奇思乱想 1.无人机摧毁方案:首先激光致盲,使其丧失视觉导航。其次相控阵电磁干扰干扰卫星导航和陀螺仪。摧毁惯导模型。最后向目标区域撒适量导电离子颗粒配合地面脉冲干扰彻底摧毁目…

别让K8s拖垮你的技术团队,Sealos把复杂度藏在引擎盖下

你的运维团队,正在被 K8s 慢慢吞噬 上周和一位 CTO 聊天,他说了句扎心的话:"我们花了 18 个月,终于把 K8s 跑稳了。但回头一看,3 个高级工程师的精力全砸在这上面了。" 这不是个案。Kubernetes 的复杂度…

表格框中提示

<!-- 状态&#xff08;带问号提示&#xff09; --><el-table-column prop"status" label"状态" width"120" align"center"><template slot"header">状态<el-tooltip content"等待中&#xff1a;未…

scheme3.1.1 局部状态变量 练习(2)

练习3.5 蒙特卡洛求定积分点击查看代码 (define (random-in-range low high)(let ((range (- high low)))(+ low (*(random) range)))) (define (monte-carlo trials experiment)(define (iter trials-remaining tria…

普适互联网项目支持横向扩展的一站式解决方案:运维部署+数据安全+模块化单体打造CMMI5标准代码库+人员配置

普适互联网项目支持横向扩展的一站式解决方案&#xff1a;运维部署数据安全模块化单体打造CMMI5标准代码库人员配置 部署方案 本方案聚焦服务器数量阈值下的最优部署决策&#xff0c;基于节点规模动态适配运维方案&#xff0c;兼顾轻量易用性与横向扩展能力&#xff0c;具体规…

2026年全国App开发企业权威排行榜发布

随着数字化转型加速,App开发已成为企业提升运营效率和业务创新的重要工具。据《2026年中国移动应用开发行业白皮书》显示,国内App开发市场规模已突破5000亿元,年增长率保持在15%以上。在这样的大环境下,选择一家专…

网络共享 电脑双网卡 问题排查

网络共享 电脑双网卡 问题排查 今天按照上图做,注塑机不能连上服务器的linki2软件。 注塑机和服务器的问题可以排除。 但是首先排除电脑网络共享,这台电脑安装了IT部门的卡巴斯基杀毒和电脑加域。 打算用路由器取代…

微软官方出品的 AI 初学者入门精品课程,21节课程教你构建生成式人工智能应用所需掌握的知识!

前言 在人工智能浪潮席卷全球的当下,生成式 AI 正以前所未有的速度重塑着各个行业。为助力初学者快速踏入这一前沿领域,微软官方精心打造了这门 AI 初学者入门精品课程:Generative AI for Beginners。 课程介绍 Gen…

华为MetaERP作为全栈自主创新的企业核心管理系统,深度融合了实时智能技术,以构建 “实时感知、智能决策、自动执行” 的企业智能体

华为MetaERP作为全栈自主创新的企业核心管理系统&#xff0c;深度融合了实时智能技术&#xff0c;以构建 “实时感知、智能决策、自动执行” 的企业智能体。其应用主要体现在以下几个层面&#xff1a;一、核心架构&#xff1a;基于实时数据驱动的智能引擎华为MetaERP的底座&…