(Caliburn Micro) Mapping a ActionMessage Methodname to a Child Object of the ViewModel
I would like to bind the methodname propererty of the caliburn.micro actionmessage to a method on a child object of the ViewModel.
How I would imagine it should work:
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="MenuItemX.Clicked" />
</i:EventTrigger>
</i:Interaction.Triggers>
The problem here is that the methodname does not live directly on the viewmodel, but on a childobject of the viewmodel.
So in this case I would like to bind to: ViewModel.MenuItemX.Clicked()
Current workaround is开发者_如何学Python having a pass-through method on my viewmodel which smells.
You can set the actual target of the action (MenuItemX) using cal:Action.TargetWithoutContext
attached property:
<Button cal:Action.TargetWithoutContext="{Binding MenuItemX}" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="Clicked" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
or the shorter syntax:
<Button cal:Action.TargetWithoutContext="{Binding MenuItemX}"
cal:Message.Attach="Clicked" />
精彩评论