WPF MenuItem:如何将SubMenuItem命令绑定到其父菜单项

问题描述:

我想绑定例如“Debug | Any CPU”MenuItem命令对Project Context BuildProjectCommand有自己的BuildConfiguration上下文。 如何正确地做到这一点? 我已经尝试用FindAncestor来完成这一工作,但它不起作用。 例如Command="{Binding Path=DataContext.BuildCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type MenuItem}}}"WPF MenuItem:如何将SubMenuItem命令绑定到其父菜单项

见图片更多的了解: enter image description here

+0

绑定弹出菜单可以的,因为路变得棘手,他们与可视树“断开连接”,它们不会以您期望的方式继承“DataContext”。有一些[技巧](https://stackoverflow.com/questions/662164/wpf-context-menu-doesnt-bind-to-right-databound-item),你可以使用。 –

我做了一个快速原型和下面结合应该工作,你希望:

<DataTemplate DataType="{x:Type commmon:BuildConfiguration}"> 
    <TextBlock x:Name="ConfigBlock"> 
     <Run Text="{Binding Name, Mode=OneWay}"/> 
     <TextBlock.InputBindings> 
      <MouseBinding MouseAction="LeftClick" 
          Command="{Binding DataContext.BuildCommand, 
          RelativeSource={RelativeSource AncestorLevel=2, 
          AncestorType={x:Type MenuItem}}}"> 
      </MouseBinding> 
     </TextBlock.InputBindings> 
    </TextBlock> 
</DataTemplate> 
+0

谢谢! AncestorLevel是黑客:P – killika