我有一个UserControl(MainView),其上有一个视图框,用于显示另一个UserControl(MidView),在UserControl中,我有一个显示另一个UserControl(BottomView)的画布。在孙子UserControl(BottomView)上我有一个ListBox,我希望能够右键单击并调用特定方法。
我有
cal:Message.Attach="[Event MouseRightButtonDown] = [Action Method1]"
列表框上的但每当我右键单击该框时,它会检查祖父母ViewModel(MainViewModel)的“Method1”。我想我必须使用cal:Action.TargetWithoutContext让它在BottomViewModel中查看,但我无法弄清楚如何使用它。
我想
cal:Action.TargetWithoutContext="{Binding MainView}"
或
cal:Action.TargetWithoutContext="{Binding MainViewModel}"
会解决我的问题,但没有运气。我出错的任何想法?
答案 0 :(得分:5)
我找到了一个旧应用程序,我在Context
上右键单击TreeView
菜单执行此操作,并且需要对实际选定的项ViewModel
执行方法,而不是父ViewModel
。
我用过:
<ContextMenu cal:Action.TargetWithoutContext="{Binding DataContext, RelativeSource={RelativeSource Self}}">
<MenuItem Header="Edit" cal:Message.Attach="Edit" />
<!-- Other Menu Items -->
</ContextMenu>
希望类似的逻辑适用于您的情况(使用您想要的事件/方法)。