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代码甚至没有被执行.
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)