开发者

(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" />
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜