方法未找到Caliburn Micro(DataContext问题?)

时间:2014-01-28 10:47:55

标签: c# wpf xaml caliburn.micro

我有一个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}"

会解决我的问题,但没有运气。我出错的任何想法?

1 个答案:

答案 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>

希望类似的逻辑适用于您的情况(使用您想要的事件/方法)。