我想将caliburn.micro actionmessage的methodname propererty绑定到ViewModel的子对象上的方法。
我怎么想象它应该有效:
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="MenuItemX.Clicked" />
</i:EventTrigger>
</i:Interaction.Triggers>
这里的问题是methodname不直接存在于viewmodel上,而是存在于viewmodel的子对象上。
所以在这种情况下我想绑定到: ViewModel.MenuItemX.Clicked()
当前的解决方法是在我的viewmodel上使用传递方法,它会闻起来。
答案 0 :(得分:7)
您可以使用cal:Action.TargetWithoutContext
附加属性设置操作的实际目标(MenuItemX):
<Button cal:Action.TargetWithoutContext="{Binding MenuItemX}" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="Clicked" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
或更短的语法:
<Button cal:Action.TargetWithoutContext="{Binding MenuItemX}"
cal:Message.Attach="Clicked" />