2017-06-26 2 views
1

Ich habe eine C# . Im XAML ich habe eine Datagrid, auf die ich hinzugefügt haben eine ContextMenu, die wie folgt aussieht:C# WPF ContextMenu: MenuItem reagiert nicht auf Klick

<DataGrid.ContextMenu> 
    <ContextMenu ItemsSource="{Binding Categories}"> 
    <ContextMenu.ItemTemplate> 
     <DataTemplate> 
     <MenuItem Header="{Binding Name}" Background="{Binding Brush}" Click="MenuItem_Click" Tag="{Binding Id}" /> 
     </DataTemplate> 
    </ContextMenu.ItemTemplate> 
    </ContextMenu> 
</DataGrid.ContextMenu> 

Wenn die Anwendung mit es wie folgt aussieht: http://imgur.com/3UTj1Xd

Das Problem ist, dass, wenn Sie auf den Button Farbe Teil der Box (die ich vermute, ist Teil eines internen Gitters) das MenuItem_Click Ereignis ausgelöst wird. Wenn ich jedoch auf den grauen Teil von MenuItem klicke, wird das Klickereignis nicht ausgelöst. Weiß jemand, warum es sich so verhält? Und gibt es eine Möglichkeit, das zu beheben?

Darüber hinaus wäre es toll, in der Lage zu sein, den gesamten Menüpunkt, nicht nur die kleine Box im Inneren zu färben. Gibt es eine Möglichkeit, dies zu tun?

+1

der "Grau Part" ist das Kontextmenü von selbst aus. Sie haben Click Event Handler auf Menu Items beschränkt, so dass es funktioniert, wenn Sie darauf klicken. Es darf nicht funktionieren, wenn Sie auf Kontextmenü klicken. Sie können versuchen, Ränder zwischen Menüelementen zu entfernen, um diese graue Zone zu entfernen. –

Antwort

1

Sie könnten versuchen, die Padding des ContextMenu und die BorderThickess des MenuItems zu verringern:

<DataGrid.ContextMenu> 
    <ContextMenu ItemsSource="{Binding Categories}" Padding="0"> 
     <ContextMenu.ItemTemplate> 
      <DataTemplate> 
       <MenuItem Header="{Binding Name}" Background="{Binding Brush}" Click="MenuItem_Click" Tag="{Binding Id}" 
          BorderThickness="0"/> 
      </DataTemplate> 
     </ContextMenu.ItemTemplate> 
    </ContextMenu> 
</DataGrid.ContextMenu> 

Oder

<DataGrid.ContextMenu> 
    <ContextMenu ItemsSource="{Binding Categories}" Padding="0"> 
     <ContextMenu.ItemContainerStyle> 
      <Style TargetType="MenuItem"> 
       <Setter Property="Header" Value="{Binding Name}" /> 
       <Setter Property="Tag" Value="{Binding Id}" /> 
       <Setter Property="Background" Value="{Binding Brush}" /> 
       <EventSetter Event="Click" Handler="MenuItem_Click" /> 
      </Style> 
     </ContextMenu.ItemContainerStyle> 
    </ContextMenu> 
</DataGrid.ContextMenu> 
+0

Die zweite Lösung funktioniert! Vielen Dank :) – Bastian

Verwandte Themen