使用 MVVM 从 WPF 应用程序启动对话框/子窗口的标准方法

2023-11-21

所有,我想知道使用 MVVM 模式从 WPF 启动 [子] 对话框/窗口的公认最佳方法/行业标准。我遇到过以下文章:

A. CodeProject - 使用 MVVM 模式时显示对话框

这种方法对我来说似乎不错,但有些过分了。这是某种程度的代码复制,我不相信这是正确的方法。

B. WPF MVVM 和显示对话框

本文简要介绍了具有各种链接的三个选项,这些选项在解释方法方面都相当/非常差或与主题无关。

有人可以解释一下吗工业标准使用 MVVM 从 WPF 应用程序启动对话框的方法/方法,最好是一些进一步阅读材料的链接?如果您能自己提供一个例子,我当然会非常感激!

谢谢你的时间。


首先,我不知道使用 MVVM 显示对话框的任何“行业标准”方式,因为没有这样的东西。
其次,欢迎来到 MVVM,您刚刚触及了 MVVM 没有标准的领域。
说实话,MVVM 有很多痛点,这就是为什么有大量 MVVM 框架的原因,仅举几个 MVVM Light、PRISM、Caliburn.Micro、Cinch、Catel、WAF、Baboon、shell i停下来或者你想要更多。
现在回答你的问题,在处理了大多数这些框架之后,我注意到一个共同点,它们都使用 DI/IoC 容器,然后为你提供一个接口,比如 IDialogManager 和他们自己的实现,然后他们问你在您的视图模型中接受此接口并使用它来显示对话框。综上所述,我将使用依赖注入,有一个用于显示对话框的接口,然后提供和实现它,并将其注册到 di 容器,然后从我的视图模型或视图中使用它。
Edit:所以您选择了 PRISM(我认为)其中最难的是显示对话框。现在撇开这一点,有一个困难的方法是使用互动请求 (查看文章中间),或者你可以使用这个Answer作为一种更快的方法。

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

使用 MVVM 从 WPF 应用程序启动对话框/子窗口的标准方法 的相关文章

  • 使用 Unity 在构造函数中使用属性依赖注入

    好的 我在基类中定义了一个依赖属性 我尝试在其派生类的构造函数内部使用它 但这不起作用 该属性显示为 null Unity 在使用 container Resolve 解析实例后解析依赖属性 我的另一种选择是将 IUnityContaine
  • 为 Visual Studio 2013 编译 Tesseract

    我正在尝试使用tesseract在 Visual Studio 2013 中 我在链接器 gt 输入 不是 libtesseract302 static lib 中使用 libtesseract302 lib 一切都正常 并且已编译并运行
  • 推导指南中的引用和值之间的差异

    考虑类型A template
  • 如何修复此错误“GDI+ 中发生一般错误”?

    从默认名称打开图像并以默认名称保存 覆盖它 我需要从 Image Default jpg 制作图形 将其放在 picturebox1 image 上并在 picurebox1 上绘制一些图形 它有效 这不是我的问题 但我无法保存 pictu
  • XAML:如何定义要在多个项目中使用的数据模板和样式

    我开始使用 WPF net 3 5 sp1 仅使用 VS 尚未混合 开发桌面应用程序 我现在的情况是 我在几个库中有一些通用的可重用组件 我可以在哪里定义样式和数据模板 以便它们可以在多个项目中重复使用 从而获得一致的外观和感觉 我看过 R
  • 在新的浏览器进程中打开 URL

    我需要在新的浏览器进程中打开 URL 当浏览器进程退出时我需要收到通知 我当前使用的代码如下 Process browser new Process browser EnableRaisingEvents true browser Star
  • 在 Unity 进程和另一个 C# 进程之间进行本地 IPC 的最快方法 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我希望每秒大约 30 次从 C 应用程序向我的 Unity 应用程序传送大量数据 由于 Unity 不支持映射内存和管道 我考虑了 t
  • 读取文件特定行号的有效方法。 (奖励:Python 手册印刷错误)

    我有一个 100 GB 的文本文件 它是来自数据库的 BCP 转储 当我尝试导入它时BULK INSERT 我在第 219506324 行上收到一个神秘错误 在解决此问题之前 我想看看这一行 但可惜的是我最喜欢的方法 import line
  • 如何从 .resx 文件条目获取注释

    资源文件中的字符串有名称 值和注释 The ResXResourceReader类让我可以访问名称和值 有办法看评论吗 你应该能够得到Comment via ResXDataNode class http msdn microsoft co
  • 用于检查项目文件中的项目变量和引用路径的 api

    我正在研究一个 net application VS2010 与 x 没有 解和变量号这些解决方案中的项目数量 我需要检查项目属性 特定于一定数量的项目 是否同质 并且检查 验证构建期间的参考路径 有没有一个API是这样的吗 如果没有 我该
  • C# Dns.GetHostEntry 不返回连接到 WiFi 的移动设备的名称

    我有一个 C 中的 Windows 窗体应用程序 我试图获取列表中所有客户端的主机名 下面给出的是 ra00l 来自此链接的代码示例 GetHostEntry 非常慢 https stackoverflow com questions 99
  • 无法在 Windows 运行时组件库的 UserControl 中创建依赖项属性

    我想在用户控件内创建数据可绑定属性 这个用户控件包含一个 Windows 运行时组件 项目 我使用下面的代码来创建属性 public MyItem CurrentItem get return MyItem GetValue Current
  • ASP.NET:获取自 1970 年 1 月 1 日以来的毫秒数

    我有一个 ASP NET VB NET 日期 我试图获取自 1970 年 1 月 1 日以来的毫秒数 我尝试在 MSDN 中寻找方法 但找不到任何东西 有谁知道如何做到这一点 从 NET 4 6 开始 该方法ToUnixTimeMillis
  • 未定义的行为或误报

    我 基本上 在野外遇到过以下情况 x x 5 显然 它可以在早期版本的 gcc 下编译干净 在 gcc 4 5 1 下生成警告 据我所知 警告是由 Wsequence point 生成的 所以我的问题是 这是否违反了标准中关于在序列点之间操
  • C++:.bmp 到文件中的字节数组

    是的 我已经解决了与此相关的其他问题 但我发现它们没有太大帮助 他们提供了一些帮助 但我仍然有点困惑 所以这是我需要做的 我们有一个 132x65 的屏幕 我有一个 132x65 的 bmp 我想遍历 bmp 并将其分成小的 1x8 列以获
  • 批量更新 SQL Server C#

    我有一个 270k 行的数据库 带有主键mid和一个名为value 我有一个包含中值和值的文本文件 现在我想更新表格 以便将每个值分配给正确的中间值 我当前的方法是从 C 读取文本文件 并为我读取的每一行更新表中的一行 必须有更快的方法来做
  • C++ 密码屏蔽

    我正在编写一个代码来接收密码输入 下面是我的代码 程序运行良好 但问题是除了数字和字母字符之外的其他键也被读取 例如删除 插入等 我知道如何避免它吗 特q string pw char c while c 13 Loop until Ent
  • 用于 C# 的 TripleDES IV?

    所以当我说这样的话 TripleDES tripledes TripleDES Create Rfc2898DeriveBytes pdb new Rfc2898DeriveBytes password plain tripledes Ke
  • 使用 GhostScript.NET 打印 PDF DPI 打印问题

    我在用GhostScript NET http ghostscriptnet codeplex com打印 PDF 当我以 96DPI 打印时 PDF 打印效果很好 但有点模糊 如果我尝试以 600DPI 打印文档 打印的页面会被极大地放大
  • 检查Windows控制台中是否按下了键[重复]

    这个问题在这里已经有答案了 可能的重复 C 控制台键盘事件 https stackoverflow com questions 2067893 c console keyboard events 我希望 Windows 控制台程序在按下某个

随机推荐

  • 使用 Retrofit 转换 json 数组?

    这是我的 Json nata center id 67 nata center name Primo Institute of Design nata center id 68 nata center name Sai Ganesh Ins
  • php 中的 header 是如何工作的?

    浏览 php net 网站 它有一个标头示例 它说会给我错误 我复制了它 并在 WAMP 上执行 但它没有显示任何错误 但确实重定向到该站点 只是想知道 它在我的 WAMP 上是否是正确的行为 或者它是一个错误 或者我是否在 php ini
  • 检索项目的父级时出错:升级到 AppCompat v23 后找不到与给定名称匹配的资源

    我一直使用 Eclipse 编写 Android 程序 并决定开始迁移到安卓工作室 我决定使用与 Eclipse 相同的 SDK 然后 开始了一个新项目 设置最低 SDK 4 0 API 级别 14 选择空白活动选项 活动名称和布局名称使用
  • 如何使 DACPAC 只更新一种架构?

    我有一个带有 sqlproj 项目的 VS2013 解决方案 其中包含特定于该解决方案的对象 问题是这对于其他项目来说也是常见的数据库 我的问题是自动将模式中的更改部署到数据库而不影响其他对象 默认情况下 DACPAC 会更新整个数据库 这
  • 如何在 Flex/bison 中实现 If 语句

    我没有收到错误消息 请您帮帮我 这是 l 和 y 文件 谢谢 include ifanw tab h extern int yylval return EQ return NE lt return LT lt return LE gt re
  • React Native - 禁用“屏幕尺寸”设置

    我目前正在开发一个 React Native 应用程序 我们的一些用户可能有轻微的视力问题 我们希望阻止在 Android 中设置 显示大小 因为这会使我们的应用程序无法使用 我们使用简单的代码行解决了字体大小的问题 Text defaul
  • 从多于一列的 pandas 数据帧构建 networkx 有向图或流程图

    我有 pandas 数据框 由 10 列组成 每行包含用户在线执行的一个步骤 总共 10 列 因此所有 10 个步骤过程 假设第一个活动是预订机票 那么步骤是 登录网站 gt 给出出发时间 gt 选择座位 gt 付款 审核 所以每一步都可能
  • 覆盖 auto_now 进行单元测试

    我已将数据库中的事件的一些时间戳定义为auto now add 因为信息应在存储事件的同时与其时间戳一起存储 事件的描述是这样的 class NewEvent models Model Individual event name model
  • 什么更快?在 PHP 中包含另一个文件或查询 MySQL 数据库?

    在 PHP 中 速度更快 使用include somefile php 或者使用简单的查询 MySQL 数据库SELECT查询得到相同的信息 例如 假设您有一个 JavaScript 自动完成搜索字段 需要 3 000 个术语进行匹配 使用
  • 如何在Android上绘制两个地理点之间的路线

    我在 MapView 上有两个 OverlayItem 如何绘制两个地理点之间的路线 该应用程序包含源代码 它将解决您的问题 http www anddev org the friend finder mapactivity using g
  • 如何将 Spring @Autowired 所需属性设置为 false 进行测试?

    到目前为止 我一直在使用 Required 注释来确保 Spring 配置的应用程序中的 DI Bean 要启用注释 您需要在配置中声明一个RequiredAnnotationBeanPostProcessor bean 在你的测试配置中
  • 规避 SCHEME 中的 EVAL

    彼得 诺维格 Peter Norvig 在 PAIP 中说道 在现代 lisps 中 eval 很少被使用 事实上 在Scheme 中有 根本没有评估 如果您发现自己使用 eval 那么您可能是 做错事 有哪些方法可以规避使用eval在计划
  • 在 if 语句中分配和测试变量的最合适方法是什么?

    以下哪一种是首选的做事方式 为什么 是否有任何具体情况会产生任何影响 假设函数 bar 在任何时候都不取零值 案例1 测试两个条件的真值 if foo bar foo lt 0 error 情况 2 仅测试分配的变量 if foo bar
  • 如何在 IE 中一次性下载多个文件

    我想通过单击 jsp 中的按钮来下载多个文件 我在 js 中使用以下代码来调用一个 servlet 两次 var iframe document createElement iframe iframe width iframe height
  • UIView 动态高度取决于标签高度

    我有一个标签 它动态地从数据库中获取一些数据 这些数据是字符串 有时可以是 3 4 5 行等 所以这个标签位于 UIView 内部 UIView Label 我怎样才能使UIView动态获取标签的特定高度 你可以用这张照片的故事板来做 将标
  • 保护 git 存储库中的文件

    我有一个中央存储库 其中包含我希望防止其他用户更改 通过推送 的文件子集 如果我将这些文件添加到 gitignore 它们不会被克隆 是否可以提供克隆所有文件的能力 但克隆后将其中一些添加到 gitignore在客户端 您可以将文件放在存储
  • WCF 是否始终使用 SOAP 通过绑定发送信息?

    据我所知 您可以从一系列绑定中进行选择 例如 TCP HTTP HTTPS 等 我认为它总是使用 SOAP 通过此连接发送数据是否正确 我正在观看 WCF 指南 其中讨论了如何将异常序列化为 SOAP 并发送到客户端 我本以为并非所有绑定都
  • Android 检查是否有WiFi但上不了网

    我正在编写一个程序 需要检查三种状态 1 如果我没有 WiFi 2 如果我有 WiFi 但没有互联网连接 就像我打开路由器但拔掉以太网电缆 以及 3 如果我有 WiFi 和互联网连接 然后 我会更改应用程序中图标的颜色来代表这些状态之一 红
  • Ctrl+Space 更改键盘,而不是在 Visual Studio 2010 上显示 Intellisense 的自动完成列表

    我注意到 Visual Studio 2010 意外地更改了键盘布局 我尝试了一些解决方案 例如 Going to Windows Control Panel and removing other languages Going to Me
  • 使用 MVVM 从 WPF 应用程序启动对话框/子窗口的标准方法

    所有 我想知道使用 MVVM 模式从 WPF 启动 子 对话框 窗口的公认最佳方法 行业标准 我遇到过以下文章 A CodeProject 使用 MVVM 模式时显示对话框 这种方法对我来说似乎不错 但有些过分了 这是某种程度的代码复制 我