如何在XAML中设置CommandParameter?

Mat*_*att 2 .net wpf xaml .net-4.0

我有以下XAML:

   <dxg:GridControl Name="theGrid" DataSource="{Binding Path=Groupings}">
       <dxg:GridControl.ContextMenu>
           <ContextMenu>
               <MenuItem x:Name="gridprint" Command="{Binding Path=GridPrintCommand}"/>
           </ContextMenu>
       </dxg:GridControl.ContextMenu>
   </dxg:GridControl>
Run Code Online (Sandbox Code Playgroud)

当GridPrintCommand执行时,其GridPrintCommand.Execute(param)方法的参数为null.我想将参数设置为网格控件.我可以在代码隐藏中这样做:

gridprint.CommandParameter = theGrid;
Run Code Online (Sandbox Code Playgroud)

这很好用.但是我试图在XAML中设置相同的东西(CommandParameter),而我却无法做到正确!我放的所有内容都会导致BindingExpressionError或null参数.我错过了什么?

Rac*_*hel 9

试试这个:

<MenuItem x:Name="gridprint"
    CommandParameter="{Binding PlacementTarget, RelativeSource=
         {RelativeSource FindAncestor, AncestorType={x:Type ContextMenu}}}" />
Run Code Online (Sandbox Code Playgroud)

ContextMenus不是WPF的普通VisualTree的一部分,因此您必须使用PlacementTarget绑定以获取ContextMenu附加到的对象