2010-11-08 4 views
0

Dans ma vue principale, j'ai un curseur qui peut être utilisé pour mettre à l'échelle l'application.wpf binding contextmenu

<Slider x:Name="zoomSlider" VerticalAlignment="Center" Value="1" IsSnapToTickEnabled="True" TickFrequency="0.2" TickPlacement="Both" Minimum="0.5" Maximum="3" SmallChange="0.5" LargeChange="0.5" Width="100" /> 

et chaque contrôle est transformé en conséquence échelle:

<Controls:AutoHidePanel AutoHide="False" AutoFade="True" Height="50" Orientation="Horizontal"> 
      <Controls:AutoHidePanel.LayoutTransform> 
       <ScaleTransform 
       ScaleX="{Binding Value, ElementName=zoomSlider}" 
       ScaleY="{Binding Value, ElementName=zoomSlider}"/> 
      </Controls:AutoHidePanel.LayoutTransform> 
      <MenuControl /> 
     </Controls:AutoHidePanel> 

Cela fonctionne bien: comme ça tous les contrôle dans mes fenêtres fines écailles.

Maintenant, le MenuControl est une vue qui a un bouton de division, et ce bouton fractionné utilise un menu contextuel pour afficher les sous-éléments. Le bouton lui-même est également mis à l'échelle, mais le menu contextuel n'est pas mis à l'échelle.

Comment puis-je m'assurer que ce menu contextuel est mis à l'échelle avec son contrôle de bouton?

Répondre

1

En attendant, j'ai trouvé une solution. Je viens de définir le contexte de données du menu contextuel à son contexte de données parent comme:

<ContextMenu DataContext="{Binding RelativeSource={RelativeSource Mode=Self}, Path=PlacementTarget.DataContext}">