news 2026/4/18 12:02:22

VM访问View(Interaction)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 3:47:48

AVERAGEA函数深度解析:Excel中被忽略的平均值计算利器

当你遇到包含逻辑值、文本甚至错误值的复杂数据时&#xff0c;AVERAGEA函数将成为你的救星&#xff01; 一、AVERAGEA vs AVERAGE&#xff1a;本质区别深度解析 函数基础对比 AVERAGE(数值1, [数值2], ...) -- 只计算数值 AVERAGEA(值1, [值2], ...) -- 计算所有非空值…

作者头像 李华
网站建设 2026/4/18 8:33:48

搞懂大数据CAP定理,为你的职业发展添砖加瓦

搞懂大数据CAP定理&#xff1a;从原理到实战&#xff0c;为你的分布式架构能力赋能 引言&#xff1a;为什么你的分布式系统总在“纠结”&#xff1f; 假设你正在设计一个电商库存系统&#xff1a; 运营说“不能超卖&#xff01;”——这要求数据绝对一致&#xff08;买一件库…

作者头像 李华
网站建设 2026/4/18 5:35:23

大数据领域数据服务在旅游科技领域的应用探索

大数据领域数据服务在旅游科技领域的应用探索关键词&#xff1a;大数据数据服务、旅游科技、个性化推荐、动态定价、客流管理、智能行程规划、数据驱动决策摘要&#xff1a;本文以“大数据如何赋能旅游行业智能化升级”为核心&#xff0c;结合旅游场景中的实际需求&#xff0c;…

作者头像 李华
网站建设 2026/4/18 8:26:38

学长亲荐2026 MBA论文写作TOP10 AI论文网站

学长亲荐2026 MBA论文写作TOP10 AI论文网站 2026年MBA论文写作工具测评&#xff1a;精准筛选&#xff0c;高效助力 随着人工智能技术的持续发展&#xff0c;越来越多的MBA学生开始借助AI工具提升论文写作效率。然而&#xff0c;面对市场上琳琅满目的平台&#xff0c;如何选择真…

作者头像 李华
网站建设 2026/4/18 5:43:08

文件或者文件夹存在但是删除提示项目文件不存在解决方法

方法一&#xff1a;F5刷新一下文件夹&#xff0c;可能是缓存问题方法二&#xff1a;方法一不行说明不是文件夹缓存问题&#xff0c;可以试试下面脚本方法强制删除第一步、复制以下文字到记事本DEL /F /A /Q \\?\%1RD /S /Q \\?\%1第二步、将记事本文件另存为.bat文件第三步、…

作者头像 李华
网站建设 2026/4/18 8:03:55

【开题答辩全过程】以 基于java的城市公交查询系统为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

作者头像 李华