问题标签 [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.

0 投票
4 回答
6978 浏览

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 视图?)。

0 投票
2 回答
1660 浏览

wpf - 为什么不使用部分类来构建 MVVM 模式中的 ViewModel?

为什么不使用部分类来构建 ViewModel?

既然viewmodel类的定义对datamodel的数据类有一定的定义,何不尝试减少一些工作,扩展或制作datamodel的部分类,用命令补全等等。

0 投票
4 回答
19523 浏览

wpf - 在 MV-VM 中使用 IDataErrorInfo

如果我的域对象实现了 IDataErrorInfo,并且我正在使用 MV-VM,我如何通过 ViewModel 将错误传播到 View 中?如果我直接绑定到模型,我会在绑定上将“ValidateOnExceptons”和“ValidateOnErrors”属性设置为 true。但是我的 ViewModel 没有实现 IDataErrorInfo。只有我的模型。我该怎么办?

澄清 我正在处理在域对象中实现 IDataErrorInfo 的现有代码库。我不能只在我的视图模型中实现 IDataErrorInfo。

0 投票
1 回答
683 浏览

wpf - 将 ViewModel 中的命令绑定到 View 中的元素的最佳方法是什么?

任何尝试使用 MV-VM 在 WPF 中实现 RoutedCommands 的人无疑都会遇到问题。命令(即非 UI 命令)应在 ViewModel 中实现。例如,如果我需要保存 CustomerViewModel,那么我会直接在我的 CustomerViewModel 上将其实现为命令。但是,如果我想弹出一个窗口来显示用户地址,我会直接在视图中实现 ShowCustomerAddress 命令,因为这是一个特定于 UI 的功能。

如何在视图模型中定义命令绑定,并在视图中使用它们?

0 投票
2 回答
8652 浏览

silverlight - Silverlight 数据绑定 - 将 ValueConverter 绑定到视图模型上的属性

假设我有以下 xaml ......

...以及以下代码...

这按预期工作,但感觉错误的是,我需要两个单独的类来获取视图所需的数据(想象一下 ViewModel 和 LoadChildrenValueConverter 从 Web 服务中提取数据而不是返回硬编码数据)。这里有更好的解决方案吗?我在想也许是这样的......

...但是我无法让这条线工作...

<control:HierarchicalDataTemplate ItemsSource="{???}">

...即使这似乎也不是一个很好的解决方案。有没有人对此有一个很好的干净解决方案?

0 投票
2 回答
1749 浏览

wpf - WPF MVVM 中的两个“自我更新”属性

考虑到您在 WPF 中有一个 MVVM 架构,例如Josh Smith 的示例

您将如何实现两个相互更新的“同步”属性?我的模型中有一个 Price 属性和一个 PriceVatInclusive 属性。

- 当价格发生变化时,我希望看到含增值税的价格自动变为“价格 * 1.21”。

- 反之亦然,当 PriceVatInclusive 发生变化时,我希望价格为“PriceVatInclusive / 1.21”

有什么想法吗?

如果您的模型是实体框架实体怎么办?你不能使用上面的方法......不是吗?您应该将计算代码放在 ViewMODEl 中还是...?

0 投票
12 回答
22002 浏览

silverlight - 我应该在 Silverlight 项目中使用模型-视图-视图模型 (MVVM) 模式吗?

Silverlight 控件的一个挑战是,当属性绑定到代码时,它们在 Blend 中不再是真正可编辑的。例如,如果您有一个从数据馈送中填充的 ListView,则在 Blend 中编辑控件时没有可见的元素。

我听说由 WPF 开发社区发起的 MVVM 模式也有助于保持 Silverlight 控件“可混合”。我仍在纠结它,但这里有一些解释:

一个潜在的缺点是该模式需要额外的类,尽管不一定需要更多代码(如上面的第二个链接所示)。想法?

0 投票
2 回答
5475 浏览

c# - 具有显式接口的依赖属性

我正在为我们部门的工作拼凑一个 WPF 演示,向他们展示 WPF 的优势,同时努力遵守我们的开发标准(依赖注入和将对象开发到显式接口)。

我现在遇到了一些困难。我正在使用 MVVM 设计模式实现视图,并且每次更新视图模型 (VM) 上的属性时,我都需要更新 TextBlocks Text 属性。为此,我将 VM 属性定义为依赖属性并将视图中的 TextBlocks Text 属性绑定到它。

现在 MV 属性在我的界面上,并且(根据我们的开发标准)明确定义。从视图中,我将视图中 TextBlock 的 Text 属性绑定到依赖属性属性(不是静态部分),但是当依赖属性值更改时,这不会更新我的视图(我知道如何绑定到显式接口,所以这个据我所知,这不是问题)。

任何帮助将不胜感激。我可以将依赖属性与显式接口一起使用吗?如果可以的话,如果没有,您对我在这种情况下可以做什么有任何想法吗?

感谢您的阅读,我期待您的回复。

亚当

0 投票
8 回答
54490 浏览

silverlight - 良好的 Silverlight-MVVM 实践示例

我已经阅读了许多关于 Model-View-ViewModel 模式的好文章,我的团队打算在我们的应用程序的最新版本中实现这种模式。我仍然没有完全了解所有这些可以一起完成这项工作的部分。我想找到一个可以解决的这种模式的好例子。小规模的事情,就像 Jason Dolinger 在他的视频中所做的那样但我想要一些我可以自己以较慢的速度完成的事情。

在此先感谢您的帮助。

0 投票
2 回答
3676 浏览

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 层似乎确实增加了很多工作,但可测试性并没有变得更好。