2011-06-07 42 views
4

我想將caliburn.micro actionmessage的methodname propererty綁定到ViewModel的子對象上的方法。(Caliburn Micro)將ActionMessage方法名映射到ViewModel的子對象

我怎麼會想象它應該工作:

<i:Interaction.Triggers> 
    <i:EventTrigger EventName="Click"> 
    <cal:ActionMessage MethodName="MenuItemX.Clicked" /> 
    </i:EventTrigger> 
</i:Interaction.Triggers> 

的這裏的問題是,方法名不會在視圖模型直接住,但在視圖模型的childobject。

因此,在這種情況下,我想結合: ViewModel.MenuItemX.Clicked()

當前的解決辦法是具有在我的視圖模型,其氣味直通方法。

回答

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

非常感謝你! – 2011-06-15 09:04:18

+0

如何在WP7上使用CM的AppBarButton?編譯器說該屬性不可附加到AppBarButton。 – serega 2011-08-05 10:14:27

+0

CM的WP7版本有一個特殊的AppBarButton支持相同的語法。 – 2011-08-06 23:38:05

相關問題