MVVM - 从 ViewModel 后面的代码中调用 UI 逻辑

2023-12-31

我正在使用 MVVM 模式开发一些 .Net XAML 应用程序。 根据 MVVM,我将应用程序逻辑保留在 VM 中,并在代码隐藏中执行与 UI 相关的操作。 但我需要在Code Behind中执行一些UI相关的代码来响应VM中的一些逻辑。

例子: 当登录操作失败时,我需要显示一条错误消息(在我的情况下是自定义 toast 通知)。登录操作驻留在虚拟机中,但我无法在虚拟机中使用任何特定于 UI 的类,因此我在虚拟机中创建了一个事件,并连接到代码隐藏中,执行 UI 操作。

是否违反了MVVM模式?如果是,那么我的案子该如何解决?


理想情况下,View 和 ViewModel 之间的通信通过 MVVM 模式完成Mediator http://www.codeproject.com/Articles/35277/MVVM-Mediator-Pattern以避免虚拟机硬引用视图。有一个调解员,

  1. View可以订阅某种类型的消息。
  2. 然后VM将消息发送给中介者,
  3. 中介者广播该消息,因此所有订阅方都会收到该消息。
  4. View收到消息后,可以根据消息执行一定的UI逻辑来进行响应

上面的 CodeProject 链接显示了如何实现中介器类。但我会建议使用流行的MVVM框架 https://stackoverflow.com/a/5069883/2998271因为您会发现它具有 Mediator 实现和许多其他开箱即用的 MVVM 工具。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MVVM - 从 ViewModel 后面的代码中调用 UI 逻辑 的相关文章

随机推荐

  • 在 nginx 中将 /foo.html 重定向到 /foo 但不将 / 重定向到 /index

    我在磁盘上的文件具有扩展名 index html a html 我想要一个请求http example com a加载 var www a html and http example com 加载 var www index html 我希
  • Web.Config 中的页面特定配置

    我确实想知道是否有一种方法可以在 web config 中设置基于页面的配置 可以说我有Default aspx and Product aspx我想定义不同的配置 例如EnableViewState等等但是在web config而不是在页
  • 数据库中所有列的逗号分隔列表(表名 | 列名...)

    在 SQL Server 中 我希望看到 Table Name 以及数据库中与该 Table Name 关联的所有列 所以输出应该是这样的 TABLE NAME COLUMN NAME 1 Employee Employee id Last
  • 我应该使用 process.nextTick 还是 setImmediate 进行异步迭代?

    我正在尝试JavaScript 库 http dtao github io lazy js 除其他外 它还提供了可以异步迭代的序列上的映射 归约函数 A GitHub 上乐于助人的灵魂 https github com dtao lazy
  • Spark Scala:使用分析函数获取累积和(运行总计)

    我正在使用窗口函数在 Spark 中实现累积和 但应用窗口分区功能时 记录输入的顺序不会保持 输入数据 val base List List 10 MILLER 1300 2017 11 03 List 10 Clark 2450 2017
  • Erlang,在函数之间传递 nif 对象

    我写一个C nif code并且在功能上new 它创建一个堆栈结构enif alloc resource并返回该值 当我使用函数时enif make resources 它总是返回 lt lt gt gt 在二郎中 这是我的 C 代码 in
  • “此编译单元不在 java 项目的构建路径上”-Eclipse

    我是 eclipse 环境的新手 我从存储库 Hg 克隆我的项目 新建 gt 项目 gt Mercurial gt 克隆现有项目 这里我的问题是当我编辑编码时出现 此编译单元不在java项目的构建路径上 消息 自动完成功能不起作用 请让我知
  • 在 CONTAINSTABLE 中未找到接近的匹配项

    I am using SQL Server 2008 DDL CREATE TABLE dbo t words varchar 1000 NULL id int IDENTITY 1 1 NOT NULL ON PRIMARY DML in
  • 如何从 WordPress 中的另一个 PHP 文件访问数组变量?

    我添加了一些自定义代码来动态显示 WordPress 主题中的社交网络图标 方法是使用定制API https developer wordpress org themes customize api 阻止它按预期工作的唯一问题是我需要找到一
  • Raphael 中的委托拖动功能

    使用 Raphael 我希望能够拖动包含文本对象的形状 下例中的椭圆 拖动形状或文本 我希望通过设置传递给文本元素的函数来做到这一点drag 委托给关联形状的方法 尝试使用更加多态的方法来另一个 https stackoverflow co
  • RTK 查询:一次性转换所有查询响应

    通过 RTK 查询 端点的响应可以转换为transformResponse https redux js org tutorials essentials part 8 rtk query advanced transforming res
  • “使用 POSTMAN 发布图像数据”

    我正在尝试将数据发布到我的 API 我有一个模型image字段其中 image models ImageField 我的本地盒子上有一张图像 我正在尝试发送该图像 我发送正确吗 id 3 uid 273a0d69 uuid 90 image
  • C# Azure 存储 Blob 上传 TransactionScope

    是否有某个类允许在 azure blockblob 操作上使用 transactionscope 进行回滚 我想让这个工作 CloudBlockBlob blockBlob private void UploadPicture Stream
  • 访问自定义授权 MVC4 Web Api 中的 post 或 get 参数

    是否可以通过 HttpActionContext 对象访问 post 或获取参数 我有一组传感器 用于将数据记录到提供 REST API 的 Web 服务器 我想引入某种身份验证 授权 让传感器在数据中包含其硬件 ID 然后在数据库中查找该
  • 当我在cmd上运行meteor应用程序时它崩溃了

    我是流星新手 请帮忙 我创建了我的第一个应用程序 但是当我尝试运行它以便可以在浏览器上查看它时 我收到以下错误消息 C projects myapp gt meteor C projects myapp gt Started proxy g
  • 使用 R 合并数据帧的互补行

    我有这样一个数据框 0 weekday day month year hour basal bolus carb period h 1 Tuesday 01 03 2016 0 0 0 25 NA NA 0 2 Tuesday 01 03
  • 调用方法的义务

    在VB NET 中 当您创建用户控件类时 您有义务在构造函数中调用子InitializeComponent 如果不这样做 您将收到如下警告消息 Public Sub New 中 设计者生成的类型 MyUserControl 应该调用 初始化
  • 方法链和流畅接口之间的区别

    我想知道方法链接和流畅接口之间的确切区别 据我了解 方法链只是运行先前方法返回对象的方法 同时避免临时变量 这方面的一个例子可能是 Integer parseInt str intValue 相对于Fluent Interface 对象的每
  • 使用clearTimeout取消超时事件

    我有以下代码 但明确的超时不起作用 我不明白为什么 有人有任何想法吗 使用Prototype框架 function foo navigation observe mouseover function event clearTimeout b
  • MVVM - 从 ViewModel 后面的代码中调用 UI 逻辑

    我正在使用 MVVM 模式开发一些 Net XAML 应用程序 根据 MVVM 我将应用程序逻辑保留在 VM 中 并在代码隐藏中执行与 UI 相关的操作 但我需要在Code Behind中执行一些UI相关的代码来响应VM中的一些逻辑 例子