2017-09-27 11 views
1

"Debug | Any CPU" MenuItemコマンドには、プロジェクトコンテキストのBuildProjectCommandに対する独自のBuildConfigurationコンテキストがあります。 正しく行う方法は? FindAncestorでこれを達成しようとしましたが、動作しません。例: Command="{Binding Path=DataContext.BuildCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type MenuItem}}}"WPF MenuItem:SubMenuItemコマンドをその親MenuItemにバインドする方法

より理解するため

参照画像:私は迅速なプロトタイプを作ったし、下記の結合が期待どおりに動作するはずです enter image description here

+0

バインディング、ポップアップメニューは方法のためトリッキー得ることができ、それらビジュアルツリーから「切断」されている場合、期待通りの方法で 'DataContext'を継承しません。あなたがしかし、使用することができるいくつかの[トリック](https://stackoverflow.com/questions/662164/wpf-context-menu-doesnt-bind-to-right-databound-item)があります。 –

答えて

2

<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

関連する問題