2017-09-27 1 views
1

bindet Ich möchte die z. "Debug | Beliebige CPU" MenuItem Befehl, der seinen eigenen BuildConfiguration Context zum Projekt Context BuildProjectCommand hat. Wie geht es richtig? Ich habe bereits versucht, dies mit FindAncestor zu erreichen, aber es wird nicht funktionieren. z.B. Command="{Binding Path=DataContext.BuildCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type MenuItem}}}"WPF MenuItem: Wie man einen SubMenuItem-Befehl an sein Parent MenuItem

Siehe Bild für mehr Verständnis: enter image description here

+0

Binding Popup-Menü wegen der Art und Weise knifflig kann sie Sind sie vom visuellen Baum "getrennt", übernehmen sie den 'DataContext' nicht wie erwartet. Es gibt ein paar [Tricks] (https://stackoverflow.com/questions/662164/wpf-context-menu-doesnt-bind-to-right-databound-item), die Sie jedoch verwenden können. –

Antwort

2

Ich soll einen schnellen Prototyp und Bindung unten gemacht habe wie erwartet:

<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

Danke! dass AncestorLevel der Hack war: P – killika