![]() |
1
3
他说的不是WPF服务,而是应用程序服务。也就是说,将一些功能抽象为多个虚拟机可以使用的独立服务。 |
![]() |
2
14
马丁·福勒描述了他的服务 Dependency Injection 文章。简单地说,服务是一个提供其他对象使用的功能的对象。在讨论模式时,你会发现这个词使用得很频繁。 Inversion of Control 和 Service Locator . 为了使这个主题具体化,让我们考虑一下如何在MVVM模式中显示消息框。调用messagebox.show()会很糟糕,ray。这将ViewModel与UI体系结构紧密相连,并使ViewModel难以测试。相反,一种解决方案是使用服务,我们称之为IDisplayMessage。该服务以某种方式(通过上述两种模式之一)提供给ViewModel,并且该服务用于“显示”消息。在正常操作期间,此服务的具体版本将调用messagebox.show(),但在测试期间,我们可以提供不同的具体版本(测试双重版),其行为不同(noop经常出现,或者如果我们确保viewModel显示消息,则记录调用的版本,以便我们可以断言发生了该调用)。 Onyx (免责声明:我是作者)提供这样的服务,以及为您的ViewModel提供此服务(以及其他服务)所需的基础结构。 更新: 自从这篇文章发表以来,我写了一篇博文 Services: Your ViewModel Deathstar ,这个话题讲得很好。这是一系列文章的一部分,读者也可能对第一篇文章感兴趣。 Behavior - Your Trusty ViewModel Bazooka . |
![]() |
Barta · WPF MVVM不更新视图 8 月前 |
![]() |
Denis Ivanov · WPF控件在属性更改时不会更新 8 月前 |
![]() |
KrzysiekYESS · 不知道如何绑定MVVM 1 年前 |
![]() |
jason.kaisersmith · 无法通过绑定禁用条目 1 年前 |