【发布时间】:2013-10-30 22:01:42
【问题描述】:
我有许多从Screen 对象派生的ViewModels,我从Conductor<T>.Collection.OneActive 派生了我的ShellViewModel。
如果我提出新的ActivateItem 请求,例如:
ActivateItem(new AViewModel());
相关视图在我的ContentControl 中被激活,太好了。如果我再提出另一个请求:
ActivateItem(new BViewModel());
AViewModel 是 deactivated 和 BViewModel 是 active,但是,AViewModel 也被关闭了。
为了防止ViewModel 被关闭,我将已经实例化的实例传递给ActivateItem 方法。这似乎可以按我的意愿工作。
我的问题是如何跟踪已经创建的ViewModels,我并不总是想创建新实例。这样做的原因是我想保持View\ViewModel 的状态,即使用户导航到另一个View 只是为了返回。我可以在ShellViewModel 中的Collection 中维护它们,或者在Conductor 中使用Items Collection。
以下哪一个是正确的(如果有的话),或者是否有更好的解决方案来解决我的问题?
【问题讨论】:
标签: c# wpf mvvm caliburn.micro