2010-11-24 6 views
3

J'ai un problème avec mon ContextMenu dans WPF. Le menu est beaucoup trop large - c'est la largeur des articles que je mets dessus, plus environ cinquante-cent pixels. Ainsi, lorsque vous ouvrez le menu, au lieu d'être une liste propre d'options ou de boutons, il y a beaucoup d'espaces verts de chaque côté. Comment puis-je réparer cela?ContextMenu dans WPF est trop large

Edit: Voici mon XAML pour le menu:

<ContextMenu Padding="0"> 
    <Button Content="Close Tab" Height="23" Name="closetabbutton" Width="75" Margin="0,0,0,0" Click="closetabbutton_Click" /> 
    <TextBox Height="23" Name="renamebox" Width="75" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ClipToBounds="True" TextChanged="renamebox_TextChanged" /> 
    <Button Content="Close Menu" Height="23" Name="closemenubutton" Width="75" Margin="0,0,0,0" Click="closemenubutton_Click" /> 
</ContextMenu> 
+0

code s'il vous plaît .... –

+0

Cela semble être une façon inhabituelle d'utiliser un menu contextuel dans une perspective de convivialité. Habituellement, vous ajouteriez MenuItems à un ContextMenu, pas des boutons. –

+0

@chibacity: Il y a des MenuItems? Si je le change en MenuItem, le texte ne s'affichera pas, même si j'ai changé la propriété Content en propriété Header. – Puppy

Répondre

2

L'espace est réservé pour les icônes sur la gauche, et le texte du geste d'entrée (par exemple Ctrl + C) sur la droite. C'est par conception.

Si vous souhaitez changer cela, vous devrez créer votre propre style ContextMenu. Voici un exemple de la façon de le faire:

http://www.dev102.com/2008/06/20/how-to-create-a-wpf-custom-context-menu/

Mise à jour

suite à mon commentaire question, MenuItems seraient normalement utilisés lorsque vous avez des boutons utilisés. Par exemple:

<Grid.ContextMenu> 
    <ContextMenu> 
     <MenuItem Name="mnuClose" Header="Close tab" InputGestureText="Ctrl+C" /> 
     <MenuItem Name="mnuRename"> 
      <MenuItem.Header> 
       <TextBox Name="txtRename" Width="100" /> 
      </MenuItem.Header> 
     </MenuItem> 
    </ContextMenu> 
</Grid.ContextMenu> 
+0

Dois-je écrire mon propre code pour reconnaître l'InputGestureText? – Puppy

+0

@DeadMG InputGestureText est uniquement à des fins d'affichage et est conçu pour être utilisé lorsque vous accrochez des gestes manuellement. Si vous liez une commande RoutedCommand à un élément de menu et qu'elle contient un KeyGesture, l'élément de menu recevra automatiquement le texte gestuel. C'est un sujet assez compliqué, malheureusement. –

Questions connexes