有什么理由不将ViewModel保存在一个单独的,不允许xaml的程序集中?

时间:2011-08-17 04:29:41

标签: mvvm-light

如果我将所有ViewModel放入与Silverlight应用程序的xaml不同的组件中,我是否想知道自己是否在脚下拍摄?我是否会失去任何可混合性?

让我看起来更自然的是,在与Xaml / views的单独程序集中,(或应该是)完全独立于UI的ViewModel。

我是否在可混合性方面失去了什么?

我认为它非常容易进行单元测试,或者我错过了什么?

我发现有一篇文章同意我的观点,但MVVMLights默认项目创建似乎把它们放在一起,所以我想知道我是否错过了这一点......

3 个答案:

答案 0 :(得分:1)

只要这些库包含在解决方案中,您就可以引用ViewModel而不会丢失Blendability。

通常(因为我们使用PRISM)我们将所有业务领域特定信息收集到一个模块中,因此它将包括Views,ViewMOdels,Controllers等,但是具有单独的ViewModel库(或库)是可以的并且您正在使用MVVM光。

答案 1 :(得分:1)

没有必要,但如果你正在努力争取建筑的纯洁,那就很高兴。虽然VM库重用并不常见(正如LBugnion所说),但重新设置UI(或创建新UI)是很常见的,在这种情况下,只有一个UI组件可以非常方便。
如果你正在做我所听到过的谈论但从未在现实生活中看到过的话,这也会让事情变得简单:让一个独立的UX设计师在UI上工作,而其他的开发人员在幕后完成真正的代码。

如果您有一个更大的项目并且使用像Prism这样的东西来管理模块,那么遵循这种做法会变得更加烦人 - 您不仅会拥有多个模块,每个模块都将具有用于UI和视图模型/模型的单独程序集,所以你最终得到许多难以管理或导航的装配。

答案 2 :(得分:0)

我们经常为更大的应用程序执行此操作。对于小型的,通常不需要它。像这样分离程序集没有真正的技术优势(您很少重用VM库),因此它实际上是关于工作和结构的组织。就可混合性而言,你不会失去任何东西。此外,如果您使用服务,则需要在VM库(或第3个项目)中具有接口定义。

请注意,有时您会收到令人困惑的构建错误消息。如果VM库没有编译,您可能会在XAML中看到有关不存在的对象的错误,这些错误仅仅是因为库尚未构建。不要混淆。

干杯 劳伦