ListView 中的 ContextMenu,单击菜单项不会触发预期的命令

ContextMenu in ListView, click on a menuitem doesn't fire the expected command

我有一个列表视图,每个列表视图项都有关联的上下文菜单。 但是单击菜单项不会调用相应的命令 myCommand。 myCommand 链接到 "Execute" 和 "Can Execute" 方法。 "Can Execute" 方法有效,但 "Execute" 方法无效。它有一个参数。 如果删除数据上下文,将调用 "Execute" 方法,但参数始终为空。 我的代码在 xaml:

<ListView.ContextMenu>
                <ContextMenu>
                    <MenuItem Header="Open Directory " 
                              DataContext="{Binding SelectedItem, RelativeSource={RelativeSource AncestorType=ContextMenu}}"
                              Command="{Binding OpenLink}"
                              CommandParameter="{Binding Path=LocalPath}"/>
                </ContextMenu>
            </ListView.ContextMenu>

简短说明:我列表中的每个项目都有一个 属性 LocalPath。当我右键单击一个项目时,select "Open Directory",它应该打开这个项目的目录。 感谢您的帮助

妮可

设置DataContext 更改所有绑定的默认绑定上下文。如果你想从 ListView.SelectedItem 得到 LocalPath 你可以使用 RelativeSource 绑定只针对那个绑定但是你需要使用 PlacementTargetContextMenuListView.

<MenuItem 
    Header="Open Directory"
    CommandParameter="{Binding RelativeSource={RelativeSource AncestorType=ContextMenu}, Path=PlacementTarget.SelectedItem.LocalPath}"
    Command="{Binding OpenLink}"/>