关于 MVVM 模式和 GUI 中 XAML 动态加载的混淆

2024-02-17

嗯,这个问题与 MVVM 模式相关,我可以在这个论坛上快速得到答案,所以我想询问并消除我对该模式的困惑。

我对 MVVM 方法还很陌生。我欣赏这种模式并了解其背后的原理。也许我没有对这个模式进行太多的研究,这就是为什么会有一些困惑。

如果有一种情况,我想使用 XAML 动态加载 WPF 页面的几个部分,并且仍然希望符合 MVVM 方法。

令人困惑的是:

  1. 使用 XAML 动态加载视图的逻辑驻留在其中。
  2. 我是否应该为我的 WPF 页面使用单个 ViewModel,或者每个单独的部分都拥有自己的视图模型并与其他视图模型类进行交互。
  3. 如果我必须在代码隐藏本身中使用 C# 代码构建显示在 GUI 上的控制树,该怎么办? 对于使用代码创建的控件,我应该在视图本身的代码隐藏中执行命令绑定。

加载逻辑的去向并不是模式本身真正解决的问题。有一个有趣的博客文章 http://neverindoubtnet.blogspot.com/2009/05/birth-and-death-of-m-v-vm-triads.html沃德·贝尔 (Ward Bell) 对此进行了介绍。给这只猫剥皮的方法有很多种,而且它们都与 MVVM 兼容。我知道,这并不是您正在寻找的答案,但它是诚实的:)。查看沃德的博客文章...您将获得有关此主题的更深入的讨论。

至于是否为页面配备一个虚拟机,或者为每个控件配备一个虚拟机,这取决于具体情况。一般来说,我有一个页面。如果有某些部分可以在其他地方重用,我会将其分解为具有自己的虚拟机的用户控件,这意味着我们在虚拟机中拥有虚拟机。在这一点上我不同意rockeye的观点。 V-VM-M 之间不存在一对一的关系。您的模型是根据业务需求设计的,根本不考虑演示。您的 ViewModel 是根据您的演示需求而设计的,并且可能封装多个 Model。事实上,它们封装许多模型是很常见的。

就像rockeye一样,我不明白你最后一个问题。

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

关于 MVVM 模式和 GUI 中 XAML 动态加载的混淆 的相关文章

  • WPF 网络浏览器在 Adob​​e 阅读器窗口中打开 PDF 文件

    我正在创建一个 32 位 WPF 应用程序 它需要在 WebBrowser 控件中显示创建的 PDF 在做的同时 WebBrowser Navigate new Url D TestPDF MyDocument pdf 它在 Adob e
  • WPF - 将窗口置于前面

    我有一个 WPF 窗口 我没有关闭它 相反 我执行 Hide 和 Show 它 现在 当我双击记录上网格中的主窗口时 这将触发 Show 窗口 该窗口将始终显示在主窗口后面 我尝试过以下方法 但没有成功 view Show view Act
  • 强制窗口在打开时获得焦点

    我有一个 WPF 应用程序 它通过套接字连接与 C MFC 应用程序进行通信 如果用户按下 C 应用程序中的特定按钮 则会显示一个新的 WPF 窗口 以下是调用以启动 WPF 窗口的代码 var window new Window wind
  • 行为和视图模型在 MVVM 中如何关联?

    所以我在学习MVVM的时候偶然发现了一个问题 我有一个包含 TextBlock 的 TreeView 当我双击 TreeView 中的任何 TextBlock 时 我想对其执行操作 我开始学习行为 并且我有一个很好的示例来说明如何实现行为
  • 使用 TemplateColumns 将 WPF DataGrid 绑定到 DataTable

    我已经尝试了一切但一无所获 所以我希望有人能给我一个顿悟的时刻 我根本无法获得成功提取数据网格中数据的绑定 我有一个包含 MyDataType 的多列的 DataTable public class MyData string nameDa
  • 控制不同的DataContext

    控制WPF中不同的DataContext 因为我可以在不同的选项卡中部署多个 DataContext 并控制当前的 DataContext 我在用着Mvvm Light WPF4我有不同的 ViewModels View 但我不知道如何处理
  • 如何在MVVM中实现对话框架构

    我正在开发一个基于 PRISM 框架 Unity Container 的 WPF 4 0 MVVM 应用程序 我想知道在 mvvm 模式中实现对话框的最佳方法是什么 我计划在我的应用程序中使用相当多的东西 所以我想要一些可重用的东西 由于您
  • 转换BitmapImage后内存未释放

    我遇到以下 C 测试 代码的问题 public static void TestBitmap2ByteArray BitmapImage bitmap JpegBitmapEncoder encoder new JpegBitmapEnco
  • 网格内的 ContentPresenter 可见性绑定不起作用?

    我有以下网格
  • WPF HierarchicalDataTemplate 不会在属性更改时更新 ItemsSource

    这是一些 XAML
  • 使 DataTemplate 可混合

    如何为 ViewModel 制作可混合的数据模板 可在表达式混合中设计 当我转到资源并尝试直接编辑数据模板时 我在绘图板上看到的只是一个空白矩形 这是因为 DataTemplate 没有绑定到任何东西 当然 我可以创建一个 UserCont
  • 比较运算符性能 <= 与 !=

    让我们首先声明代码可读性胜过微优化 我们应该将其留给编译器 这只是一个奇怪的案例 具体细节似乎与一般建议相比很有趣 因此 我在搞素数生成器函数 并提出了一种奇怪的行为 其中 人们建议效率最高 实际上效率最低 而 C private stat
  • ItemSource 中具有不同类型数据的 ListView 多行列标题

    继续this https stackoverflow com q 26712051 1997232问题 我想实现这种ListView 它应该有两件事 多行列标题 不同的数据类型通过绑定ItemsSource以不同方式显示 为了解决 1 我尝
  • 从 xaml 获取 RowIndex

    我有一个带有 DataGridTemplateColumns 的 DataGrid 在 TemplateColumn 中 我使用工作正常的 DataTrigger 它从 DataGrid 父级检索项目计数
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • Winforms 中的 WPF ElementHost 最大化时崩溃 (Windows)

    我正在尝试将新的 WPF 控件集成到现有的 WinForms 应用程序中 并使用 ElementHost Dock Fill 来托管以下 XAML UserControl NET 4 当我将 WinForm 设置为最大化时 我的整个操作系统
  • 如何使 WPF 应用程序在 Web 浏览器上运行

    我们有一个用 WPF 编写的现有应用程序 我们正在寻找一种迁移它的方法 以便它可以在 Web 浏览器上运行 深入研究后 我们似乎需要找到一种将代码编译为 WebAssembly 的方法 但我不确定它对于现有的完全加载的 WPF 应用程序有多
  • Wpf TextBlock 中的垂直文本

    是否可以垂直显示 TextBlock 中的文本 以便所有字母彼此堆叠 不使用 LayoutTransform 旋转 还没有人提到使用纯 XAML 垂直堆叠任意字符串的字母 不旋转它们 的明显而简单的方法
  • 混合 MFC 和 WPF:模态对话框

    我使用 C CLI 界面层将 C WPF 对话框添加到现有的 C MFC 应用程序 我一切正常 只是我遇到了形式问题 例如 MFC 应用程序使用 ShowDialog 显示 WPF 对话框 按预期工作 该 WPF 对话框显示使用 DoMod
  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http

随机推荐

  • 如何在 Aptana Studio 的文本编辑器中激活自动换行?

    如何在 Aptana Studio 的文本编辑器中激活换行 我对在视图模式下换行感兴趣 以便不必进行水平滚动 尝试在编辑器中右键单击并从上下文菜单中选择 自动换行
  • HTML5网页是否可以接受手写笔输入

    我想创建一个网页 用户可以在其中使用手写笔书写签名 就像您签署包裹或包裹时一样 有谁知道这是否可能 我不确定从哪里开始 但我猜我必须使用元素和 javascript 只要您的客户使用的设备支持使用手写笔进行触摸输入 就完全有可能 你可以看到
  • 是否可以在 Lambda 触发器中修改 AWS Cognito 用户属性

    查看AWS文档 https docs aws amazon com cognito latest developerguide cognito user identity pools working with aws lambda trig
  • 覆盖 jOOQ 对 UpdatableRecords 的异常处理

    我使用的是 jOOQ v2 6 因为我使用的是 SQL Server 2008 R2 并且 jOOQ v3 1 中存在一个错误 导致代码生成失败 我知道这将在 v3 2 中修复 从手册中 Create a new record BookRe
  • scenebulider 无法打开 fxml 文件

    我正在 JavaFX 中创建一个应用程序 我在打开场景构建器时收到此错误 无法打开 Loggin fxml 打开操作失败 请确保所选文件是有效的 fxml 文档 单击 显示详细信息 它向我显示了此错误 java io IOException
  • 如何将二进制值字符串转换回 char

    Example 注意 我只关心字母 所以位集 000001 是a or A 我有一个string named s与价值 abc 我把每一个char of the string并将其转换为二进制值通过 指某东西的用途bitset e g bi
  • (自定义)RestAuthenticationProcessingFilter 排序的异常

    我尝试将令牌的 Rest 身份验证添加到我的应用程序中 我创建了一个简单的过滤器 不执行任何其他操作来打印消息 public class RestAuthenticationProcessingFilter extends GenericF
  • Justadistraction:标记化没有空格的英语。村上羊人

    我想知道如何you如果删除空格 会用英语 或其他西方语言 对字符串进行标记吗 这个问题的灵感来源于村上小说 羊人 中的角色舞蹈 舞蹈 舞蹈 http en wikipedia org wiki Dance Dance Dance 在小说中
  • 如何将本地数据库复制到heroku?

    我正在开发一个简单的 Rails 基于 activeRecord 应用程序 并且正在本地进行测试 现在是时候转移到网上了 但是 我需要在应用程序的数据库中再次插入所有记录吗 我希望不是 你知道是否可以复制我的整个本地数据库并将其导入到her
  • 透明 ViewController 可以看到下面的父级吗?

    我想以模态方式添加一个具有透明背景的视图控制器 以便可以看到下面的父视图控制器 这是适用于 iPhone 的应用程序 不适用于 iPad 我已经尝试过这个 TextFieldViewController vc self storyboard
  • 计算布尔数组中真(或假)元素的数量?

    假设我有一个充满布尔值的数组 我想知道有多少元素为 true private bool testArray new bool 10 true false true true false true true true false false
  • Firebase .get() 与 .once() - 有什么区别?

    文档here https firebase google com docs database web read and write read data once with get但我不明白 get 和 once 有什么区别 我的理解是 ge
  • iPhone - 将选定的单元格移动到 uitableview 的顶部

    我寻找这个问题 但我不相信我能找到答案 我有一个自定义单元格的表格视图 单击该单元格时 所选单元格会推送包含信息的新单元格 我想知道是否有人知道如何将选定的单元格推到 uitableview 的顶部 或者让它填满整个表格视图 我的 uita
  • 将嵌入的视频资源作为流播放

    EDIT 我改变了我的问题以更好地澄清问题 如何使用字节数组 取自嵌入式资源 播放视频DirectShow Net http directshownet sourceforge net about html图书馆 由于我要阻止用户访问视频文
  • CSS Transform Math - 计算倾斜引起的div高度

    我很难弄清楚如何计算因倾斜而导致的 div 容器的额外高度 我正在屏蔽容器内的图像并使用plugin http christianvarga com 2011 05 jquery resize image to parent contain
  • 使用标识符列表格式化 CREATE TABLE 查询

    我想用 Python 编写一个脚本 从 CSV 创建 PostgreSQL 表 而不是使用psycopg2 copy from我想要更个性化 更灵活的东西 显然 我将读取 CSV 文件的第一行并从中获取列名称列表 然后我想将此列表转换为您在
  • apache tomcat 9.x 无法与 eclipse 和 Java 10.0.1 一起使用

    我已经安装了 apache tomcat 9 0 7在我的 Windows 机器上并具有以下环境配置 回显 JAVA HOME C 程序文件 Java jdk 10 0 1 回显 JRE HOME C 程序文件 Java jre 10 0
  • 我可以让节点在数字字符串中输出逗号而不引入 i18n 吗?

    并不是说添加一个需求有什么大不了的 而是节点文档建议您不需要它 http nodemanual org latest js doc Number html Number toLocaleString from the docs var nu
  • Docker 在 Windows 上添加网络驱动器作为卷

    我正在尝试将网络驱动器安装为卷 这是我正在尝试的命令 docker run v NetworkDirectory Folder data alpine ls data 我在 Windows 上运行此命令 数据目录为空 如何将此网络目录作为卷
  • 关于 MVVM 模式和 GUI 中 XAML 动态加载的混淆

    嗯 这个问题与 MVVM 模式相关 我可以在这个论坛上快速得到答案 所以我想询问并消除我对该模式的困惑 我对 MVVM 方法还很陌生 我欣赏这种模式并了解其背后的原理 也许我没有对这个模式进行太多的研究 这就是为什么会有一些困惑 如果有一种