.net Caliburn Micro,向另一个ViewModel发送消息/操作

.net Caliburn Micro,向另一个ViewModel发送消息/操作,.net,mvvm,caliburn.micro,.net,Mvvm,Caliburn.micro,我得到了一个具有多个子视图(和视图模型)的ShellViewModel。子视图可以通过Message.Attach轻松绑定到ShellViewModel中的方法。它冒泡了。但是我可以“向下冒泡”以便ShellViewModel在子ViewModel中触发一个方法,或者甚至从一个子视图向上然后向下触发另一个子视图吗 好吧,我可以使用EventAggregator,但这是最优雅的方式吗?我相信,没有“泡泡下降”这样的东西。但是,您可以使用Bind.ModelWithoutContext将操作目标移动

我得到了一个具有多个子视图(和视图模型)的ShellViewModel。子视图可以通过Message.Attach轻松绑定到ShellViewModel中的方法。它冒泡了。但是我可以“向下冒泡”以便ShellViewModel在子ViewModel中触发一个方法,或者甚至从一个子视图向上然后向下触发另一个子视图吗


好吧,我可以使用EventAggregator,但这是最优雅的方式吗?

我相信,没有“泡泡下降”这样的东西。但是,您可以使用Bind.ModelWithoutContext将操作目标移动到子视图模型:

<Button cal:Message.Attach="DoIt" cal:Bind.ModelWithoutContext="{Binding Path=ChildViewModel}" Content="Test It!"/>


上有“一些”文档。希望它能帮助你。

你不应该这样做。您的主视图不应该知道您的子视图。工具栏应该如何在不在其上的另一个视图中触发操作?绑定到同一个视图模型/命令。对于“just down”,这很好。我想对于更复杂的场景,
EventAggregator
是最好的选择。谢谢