如何在 MVVM 中使用同一个 ViewModel 拥有多个视图?

2023-11-26

我对 WPF 和 MVVM 都很陌生,在尝试设置DataContext到两个单独视图中的 ViewModel 的同一实例。

这是因为:

<Window.DataContext>
    <local:ViewModel/>
</Window.DataContext>

将为每个视图创建一个新的视图模型实例。

为了解决这个问题,我决定创建一个类来存储我使用的每个 ViewModel 的静态实例。然后在cs然后我将设置每个视图的文件DataContext从这个静态类到适当的 ViewModel。

这可行,但对于可能同时需要 ViewModel 的多个实例的大型程序来说似乎不是最好的主意。

有什么更好的方法来解决这个问题 - 有没有好的方法可以使用同一个 ViewModel 实例来拥有多个视图?

或者这种方法是不好的做法 - 我应该为每个 ViewModel 设计一个具有一个视图的程序吗?


您可以在 App.xaml 中实例化该视图模型,以便整个应用程序可以访问它。

<Application.Resources>
    <local:ViewModel x:Key="sharedViewModel" />
</Application.Resources>

然后,在您的视图中,当您想要使用该数据上下文时,您可以执行以下操作......

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

如何在 MVVM 中使用同一个 ViewModel 拥有多个视图? 的相关文章

  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • 机器Epsilon精度差异

    我正在尝试计算 C 中双精度数和浮点数的机器 epsilon 值 作为学校作业的一部分 我在 Windows 7 64 位中使用 Cygwin 代码如下 include
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • 类型或命名空间“MyNamespace”不存在等

    我有通常的类型或命名空间名称不存在错误 除了我引用了程序集 using 语句没有显示为不正确 并且我引用的类是公共的 事实上 我在不同的解决方案中引用并使用相同的程序集来执行相同的操作 并且效果很好 顺便说一句 这是VS2010 有人有什么

随机推荐

  • C++ 将数字从零舍入

    你好 我想在 C 中像这样舍入双数 远离零 4 2 gt 5 5 7 gt 6 7 8 gt 8 34 2 gt 35 做到这一点的有效方法是什么 inline double myround double x return x lt 0 f
  • R Shiny 应用程序中的延迟执行

    RShiny 应用程序的某些部分是否可能以延迟方式执行 就像 Windows 服务中的延迟启动一样 让我详细说明一下 我有一个带有选项卡的闪亮应用程序 每个选项卡的侧边栏面板上都有一堆单选按钮 单击每个单选按钮都会弹出一个报告 我的设置就是
  • 从 TextTransform.exe 获取参数值到模板中

    当我使用 TextTransform exe 从模板生成代码时 我找不到一些示例如何使用参数 a 在MSDN参数 a 的描述如下 指定指令的参数 处理器可以查询为 名称 值对 该指令 处理器和标识符是可选的 这允许指定参数 对于任何指令处理
  • 使用react-router-dom成功进行身份验证后将用户重定向到他们请求的页面

    我构建了一个公共路由组件 用于在用户未经身份验证时显示登录信息 每当未登录的用户单击受保护的路由时 他将被重定向到可以输入凭据的登录页面 我想要一种编程方式 这样如果他使用正确的凭据登录 他应该被重定向到他首先尝试访问的页面 例如 如果用户
  • 设置证书验证位置时出错,install_github

    我正在尝试从 github 安装软件包 但当我安装时不断收到错误消息 使用install github library devtools install github repo swirl username ncarchedi Instal
  • JavaScript 模板字符串的 Polyfill

    是否有任何使用反引号的 JavaScript 模板字符串的填充 我指的是如下代码 var textTemplate h1 My Template String h1 p Some more stuf here p 我不想使用诸如 babel
  • Cython 编译错误:'-mno-fused-madd'

    每当我编译 Cython 代码时 使用pyximport 并且经常当我从源安装软件包时 使用pip I get clang warning argument unused during compilation mno fused madd
  • Intellij IDEA Tomcat 应用程序服务器在运行配置停止之前未连接,原因:无法在 localhost:1099 ping 服务器

    我正在使用 Intellij Ultimate 版本 14 0 2 使用 Maven 作为我的构建工具来处理 Java 项目 尝试通过 Tomcat 服务器启动我的项目时 我们收到此错误 运行配置停止前未连接应用程序服务器 原因 无法 pi
  • jQuery Mobile 1.1.1 自定义选择菜单 - 占位符文本不可见

    今天早些时候 2012 年 7 月 13 日 升级到 jQuery Mobile 1 1 1 后 我注意到我的所有自定义选择菜单不再在页面加载时显示占位符文本 在 1 1 1 中我需要做一些不同的事情才能在自定义选择菜单中显示占位符文本吗
  • Java:BufferedImage 到字节数组并返回

    我发现很多人都有类似的问题 但是我还没有尝试找到我正在寻找的东西 因此 我有一个读取输入图像并将其转换为字节数组的方法 File imgPath new File ImageName BufferedImage bufferedImage
  • 如何在 Bootstrap 3 模态中居中输入?

    我目前正在从 Bootstrap 2 切换到 Bootstrap 3 如何将 Bootstrap 3 中的输入字段居中 文本正确居中 它曾经为 BS2 工作 我尝试过移动 div 中的 style text align center 但仍然
  • 如何找到word在文件中的位置?

    例如我有文件和单词 test 文件部分是二进制的 但有字符串 test 如何在不加载该文件到内存的情况下找到文件中单词 索引 的位置 除非打开文件 否则无法找到文件中文本的位置 这就像要求某人在不睁开眼睛的情况下阅读报纸一样 回答你问题的第
  • GWT 从 2.8.1 升级到 2.8.2 后出现“XmlRootElement 无法解析为类型”错误

    为了修复 Chrome 61 中损坏的 GWT 拖放功能 我们决定升级 GWT 因为修复是在 GWT 2 8 2 中 升级后 我遇到了数百个以下错误 ERROR Line 7 XmlRootElement cannot be resolve
  • Form_for 带有 url、格式和 html 选项

    我觉得我在这里缺少一些简单的东西 我正在将 form for 助手与对象一起使用 我指定 url 格式和 html 方法 但是 在渲染时 action 属性中的 url 不会采用该格式 这是我的代码 form for site url co
  • 将自定义元数据保存在从 iOS 中的 AVFoundation 获取的图像中

    当我使用以下命令获取图像时 如何在图像中保存自定义元数据AVFoundation framework 我知道我可以访问属性 只要我的图像是UIImage or CIImage但它们的属性似乎彼此不同 即使是同一图像 到目前为止 我像这样访问
  • 无法将 Type 隐式转换为 My Type

    我不确定这是否是协方差和逆变问题 但我无法使其正常工作 这是代码 public interface IDto public class PaginatedDto
  • Brunch:分离供应商和应用程序 javascript

    我从我们的项目供应商和应用程序中制作了两个 javascript 包 我按照建议的方式执行此操作文档 如我的 brunch config js 中的这段代码所示 files javascripts joinTo js vendor js s
  • 如何在Android中像Wifi分析仪应用程序一样绘制图表?

    您好 我正在尝试开发一个现场测试应用程序 我必须检索相邻小区的信号强度等信息 所以我的问题是 如何显示具有不同相邻单元格的图表 X 轴和 Y 轴上的信号强度是实时的吗 一个例子here 我已经获得了 5 或 6 个相邻小区以及每个小区的信号
  • Mac OS X / iOS 中的正则表达式匹配表情符号

    Note 在不支持所包含表情符号的系统上 这个问题可能看起来很奇怪 这是一个后续问题如何从字符串中删除表情符号 我想构建一个正则表达式来匹配可以在 Mac OS X iOS 中输入的所有表情符号 明显的 Unicode 块涵盖了大部分表情符
  • 如何在 MVVM 中使用同一个 ViewModel 拥有多个视图?

    我对 WPF 和 MVVM 都很陌生 在尝试设置DataContext到两个单独视图中的 ViewModel 的同一实例 这是因为