静态 ViewModel 与实例化 ViewModel
我有两个视图,它们共享某个视图模型中的一个可观察集合,但具有不同的集合视图参数。在 MVVM Light 中实现它的正确方法是什么?是否支持非静态虚拟机?我如何管理它们的寿命并处置它们?
I have two views that share one observable collection from certain viewmodel, but with different collection view parameters. What is the correct way of implementing it in MVVM Light? Is there any support for non-static VMs? How can I manage their lifetime and dispose them?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
有!
默认情况下,从 SimpleIoc 解析的对象是单例。为了解决这个问题,您需要传递一个唯一标识符作为 ServiceLocator.GetInstance 方法的参数。
如下所示:
我们有两个返回相同视图模型的属性。一个返回一个单例,另一个每次都会返回一个新实例。
There is!
By default objects resolved from the SimpleIoc are singletons. To get around this you need to pass a unique identifier as a parameter of the ServiceLocator.GetInstance method.
See below:
We have two properties returning the same viewmodel. One returns a singleton and the other will return a new instance each time.
Laurent 的一些示例MVVM Light 使用带有静态 ViewModel 实例(类似单例)的 ViewModelLocator。请注意
ICleanup
接口。此外,非静态 VM 通常必须在视图的构造函数中进行 MEF 或构造。Some of Laurent's examples of MVVM Light make use of a ViewModelLocator with static ViewModel instances (singleton-like). Note the
ICleanup
interface. Also, non-static VM's usually have to be MEFed in or constructed in the View's constructor.对于ViewModels管理通常使用IOC模式。在MVVM Light框架中它是一个SimpleIoc实现。
我更喜欢使用 Ninject - http://www.ninject.org/
For ViewModels management usually use IOC pattern. In MVVM Light framework it is a SimpleIoc implementation.
I prefer to use Ninject - http://www.ninject.org/