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 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" />
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With