问题标签 [mvvm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wpf - Model-View-Presenter 和 Modal 对话框.... 如何?
我正在 WPF 中实现 MVP/MV-VM,到目前为止我很幸运。但是,我看不到这个模型如何支持实现模态对话框。我从 Crack.NET ( http://www.codeplex.com/cracknetproject ) 获得了我的工作,以了解这些东西是如何工作的。
我有一个带有菜单的 ShellView 视图(它只是 XAML)。该菜单绑定到 ShellModelView 中显示“EditPreferences”的命令。
ShellModelView 实现了 EditPreferences 的 ICommand,在这里我们要放置一个对话框,让用户编辑应用程序的首选项。
这里有几个问题: 1. ShellModelView 没有对 ShellView 的引用来正确地作为对话框的父级。ShellModelView 是 ShellView 的 DataContext,但我没有看到设置的反向引用。2. ShellModelView 无论如何都不应该加载显式 UI。那么这里正确的交互模型是什么?3. 我如何建立我的 PreferencesDialog 以便它在逻辑和视图之间正确分离?PreferencesDialog 本身需要是一个 Window,因此您可以在其上调用 ShowDialog,但这意味着您需要对 Window(例如 View)的引用才能实例化它。理想情况下,我应该能够在不实例化视图的情况下对 PreferencesDialog 中的代码/验证进行单元测试(也许使用 Mock 视图?)。
wpf - 为什么不使用部分类来构建 MVVM 模式中的 ViewModel?
为什么不使用部分类来构建 ViewModel?
既然viewmodel类的定义对datamodel的数据类有一定的定义,何不尝试减少一些工作,扩展或制作datamodel的部分类,用命令补全等等。
wpf - 在 MV-VM 中使用 IDataErrorInfo
如果我的域对象实现了 IDataErrorInfo,并且我正在使用 MV-VM,我如何通过 ViewModel 将错误传播到 View 中?如果我直接绑定到模型,我会在绑定上将“ValidateOnExceptons”和“ValidateOnErrors”属性设置为 true。但是我的 ViewModel 没有实现 IDataErrorInfo。只有我的模型。我该怎么办?
澄清 我正在处理在域对象中实现 IDataErrorInfo 的现有代码库。我不能只在我的视图模型中实现 IDataErrorInfo。
wpf - 将 ViewModel 中的命令绑定到 View 中的元素的最佳方法是什么?
任何尝试使用 MV-VM 在 WPF 中实现 RoutedCommands 的人无疑都会遇到问题。命令(即非 UI 命令)应在 ViewModel 中实现。例如,如果我需要保存 CustomerViewModel,那么我会直接在我的 CustomerViewModel 上将其实现为命令。但是,如果我想弹出一个窗口来显示用户地址,我会直接在视图中实现 ShowCustomerAddress 命令,因为这是一个特定于 UI 的功能。
如何在视图模型中定义命令绑定,并在视图中使用它们?
silverlight - Silverlight 数据绑定 - 将 ValueConverter 绑定到视图模型上的属性
假设我有以下 xaml ......
...以及以下代码...
这按预期工作,但感觉错误的是,我需要两个单独的类来获取视图所需的数据(想象一下 ViewModel 和 LoadChildrenValueConverter 从 Web 服务中提取数据而不是返回硬编码数据)。这里有更好的解决方案吗?我在想也许是这样的......
...但是我无法让这条线工作...
<control:HierarchicalDataTemplate ItemsSource="{???}"
>
...即使这似乎也不是一个很好的解决方案。有没有人对此有一个很好的干净解决方案?
wpf - WPF MVVM 中的两个“自我更新”属性
考虑到您在 WPF 中有一个 MVVM 架构,例如Josh Smith 的示例
您将如何实现两个相互更新的“同步”属性?我的模型中有一个 Price 属性和一个 PriceVatInclusive 属性。
- 当价格发生变化时,我希望看到含增值税的价格自动变为“价格 * 1.21”。
- 反之亦然,当 PriceVatInclusive 发生变化时,我希望价格为“PriceVatInclusive / 1.21”
有什么想法吗?
如果您的模型是实体框架实体怎么办?你不能使用上面的方法......不是吗?您应该将计算代码放在 ViewMODEl 中还是...?
silverlight - 我应该在 Silverlight 项目中使用模型-视图-视图模型 (MVVM) 模式吗?
Silverlight 控件的一个挑战是,当属性绑定到代码时,它们在 Blend 中不再是真正可编辑的。例如,如果您有一个从数据馈送中填充的 ListView,则在 Blend 中编辑控件时没有可见的元素。
我听说由 WPF 开发社区发起的 MVVM 模式也有助于保持 Silverlight 控件“可混合”。我仍在纠结它,但这里有一些解释:
- http://www.nikhilk.net/Silverlight-ViewModel-Pattern.aspx
- http://mark-dot-net.blogspot.com/2008/11/model-view-view-model-mvvm-in.html
- http://www.ryankeeter.com/silverlight/silverlight-mvvm-pt-1-hello-world-style/
- http://jonas.follesoe.no/YouCardRevisitedImplementingTheViewModelPattern.aspx
一个潜在的缺点是该模式需要额外的类,尽管不一定需要更多代码(如上面的第二个链接所示)。想法?
c# - 具有显式接口的依赖属性
我正在为我们部门的工作拼凑一个 WPF 演示,向他们展示 WPF 的优势,同时努力遵守我们的开发标准(依赖注入和将对象开发到显式接口)。
我现在遇到了一些困难。我正在使用 MVVM 设计模式实现视图,并且每次更新视图模型 (VM) 上的属性时,我都需要更新 TextBlocks Text 属性。为此,我将 VM 属性定义为依赖属性并将视图中的 TextBlocks Text 属性绑定到它。
现在 MV 属性在我的界面上,并且(根据我们的开发标准)明确定义。从视图中,我将视图中 TextBlock 的 Text 属性绑定到依赖属性属性(不是静态部分),但是当依赖属性值更改时,这不会更新我的视图(我知道如何绑定到显式接口,所以这个据我所知,这不是问题)。
任何帮助将不胜感激。我可以将依赖属性与显式接口一起使用吗?如果可以的话,如果没有,您对我在这种情况下可以做什么有任何想法吗?
感谢您的阅读,我期待您的回复。
亚当
silverlight - 良好的 Silverlight-MVVM 实践示例
我已经阅读了许多关于 Model-View-ViewModel 模式的好文章,我的团队打算在我们的应用程序的最新版本中实现这种模式。我仍然没有完全了解所有这些可以一起完成这项工作的部分。我想找到一个可以解决的这种模式的好例子。小规模的事情,就像 Jason Dolinger 在他的视频中所做的那样,但我想要一些我可以自己以较慢的速度完成的事情。
在此先感谢您的帮助。
wcf - 模型 - 视图 - ViewModel & WCF - WCF 是模型吗?
我只是在学习 Model/View/ViewModel 模式及其变体(DataModel/View/ViewModel,或 Model/View/Presenter)。
我想知道的是:如果我将此模式与 WCF 服务一起使用,该服务是模型(DataModel),还是需要一个单独的模型来封装 WCF 服务层?
当我使用 WCF 作为 DataModel 时,如果不模拟整个 WCF 服务,我的 ViewModel 是不可测试的,因为对 WCF 的调用需要管理连接。此 ViewModel 中的调用如下所示:
为了让我的 ViewModel 可测试,我尝试添加一个单独的 DataModel 来抽象 WCF 连接。在此之后 ViewModel 是可测试的,调用看起来像这样:
问题:现在需要测试的大部分代码都移到了 DataModel 中,这同样需要测试 WCF。ViewModel 中剩下的是一个可以测试的薄壳。但是由于主要代码移到了 DataModel 中,所以测试 ViewModel 是毫无用处的。
所以对我来说,使用 WCF 向 View / ViewModel 应用程序添加一个单独的 DataModel 层似乎确实增加了很多工作,但可测试性并没有变得更好。