【问题标题】:keeping all UI logic out of ViewModel?将所有 UI 逻辑排除在 ViewModel 之外?
【发布时间】:2013-03-08 03:11:22
【问题描述】:

我对 MVVM 很陌生,我很好奇是否可以将所有 UI 特定的东西排除在 ViewModel 之外,从而使我的 viewmodel 可以跨项目移植?例如,假设我想稍后将我的应用程序从 windows phone 8 移植到 windows 8。我可以轻松地拖动我的视图模型和模型,然后设计一个连接到视图模型的新视图。如果是这样,为了使我的视图模型尽可能可移植,我应该注意哪些做法?

【问题讨论】:

    标签: view windows-8 model viewmodel mvvm-light


    【解决方案1】:

    您可以将它们构建成自己的程序集,然后在多个项目中重复使用这些程序集,而不是拖着您的模型和 VM。

    完全可以通过实现IPropertyNotifyChanged 将您的虚拟机从您的视图中分离出来。通过这种方式,您的 VM 的属性可以检查它们是否被更改,并可以通知订阅者PropertyChanged 事件发生了某些变化。这样,您的视图可以订阅对象上的 PropertyChanged 事件,并且可以在需要更新 UI 以反映对象的一个​​或多个属性的更改值时采取行动。

    请务必仔细阅读 IPropertyNotifyChanged 文档末尾的示例,该示例说明了其工作原理。

    【讨论】:

    • Richard,您能否提出一个快速的解决方案,将视图、模型和视图模型分开。我没有运气尝试过。当我的模型分离时,我的程序运行完美,但是当我将视图模型与视图分离时,Visual Studio 会很好地编译它,但是当我选择调试并且应用程序开始安装在我的 Windows 手机上时,它无法加载并告诉我的调试器无法连接到“电话的某些本地 IP 地址”。昨天我用这个工作了 6 个小时,最后我放弃了,只是让我的视图模型保持在我的视野中,它工作正常。谢谢
    猜你喜欢
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 2014-02-15
    • 1970-01-01
    • 2014-03-20
    • 2011-11-09
    相关资源
    最近更新 更多