如何将命令绑定到MenuItem(WPF)?

Jac*_*win 9 data-binding wpf command menuitem relaycommand

这是我在View.xaml.cs中的代码:

private RelayCommand _closeCommand;
public ICommand CloseCommand
{
    get
    {
        if (_closeCommand == null)
        {
            _closeCommand = new RelayCommand(param => this.OnClose());
        }
        return _closeCommand;
    }
}

public void OnClose()
{
    Close();
}
Run Code Online (Sandbox Code Playgroud)

以下是我的View.xaml中的一些代码:

<Window.ContextMenu>
    <ContextMenu>
        <MenuItem Name="menuItem_Close" Header="Close" Command="{Binding CloseCommand}" />
    </ContextMenu> 
</Window.ContextMenu>
Run Code Online (Sandbox Code Playgroud)

当我运行程序并选择关闭菜单项时,没有任何反应.CloseCommand代码甚至没有被执行.

LPL*_*LPL 9

ContextMenu不是VisualTree的一部分,这就是为什么DataContext不会继承.以下ContextMenu.PlacementTarget是某种继电器Window:

<MenuItem Name="menuItem_Close" Header="Close"
          Command="{Binding Path=PlacementTarget.DataContext.CloseCommand, RelativeSource={RelativeSource AncestorType=ContextMenu}}" />
Run Code Online (Sandbox Code Playgroud)