我想知道使用Caliburn.Micro在两个不相关的视图模型之间导航的最常规方法是什么?假设在应用程序的一个部分中有一个视图模型树:ParentViewModel-> ChildVM1-> ChildVM2等。此外,还有一个OmniVM应该能够导航到任何上述视图模型。通过“导航”我的意思是找到适当的实例(之后激活部分很简单)。 我不想涉及任何IEventAggregator的使用,也不想使用Container.Resolve这类东西。 感谢您的回复
答案 0 :(得分:1)
编辑:针对您的具体情况,由于您拥有这种深层嵌套的结构,我会在MenuViewModel
上创建一个导航界面,如下所示:
public interface IMenuNavigator {
void NavigateToItem(Item i);
}
然后我会把它注入那些内部视图模型,我想你有一种我的意思。另一方面,您也可以使用IEventAggregator
用于在不相关的组件(viewmodels)之间进行松散耦合的通信,例如在您的情况下,因此您在聚合器上发布消息以进行导航并且MenuViewModel
会侦听这些并正确处理它们。根据您的具体内部情况,您甚至可能会有更好的想法。希望有所帮助。