sjo*_*urg 4 silverlight caliburn.micro
我想将caliburn.micro actionmessage的methodname propererty绑定到ViewModel的子对象上的方法.
我怎么想象它应该工作:
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="MenuItemX.Clicked" />
</i:EventTrigger>
</i:Interaction.Triggers>
Run Code Online (Sandbox Code Playgroud)
这里的问题是methodname不直接存在于viewmodel上,而是存在于viewmodel的子对象上.
所以在这种情况下我想绑定到:ViewModel.MenuItemX.Clicked()
目前的解决方法是在我的viewmodel上使用pass-through方法.
您可以使用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>
Run Code Online (Sandbox Code Playgroud)
或者更短的语法:
<Button cal:Action.TargetWithoutContext="{Binding MenuItemX}"
cal:Message.Attach="Clicked" />
Run Code Online (Sandbox Code Playgroud)