2010-10-14 9 views
7

Sto tentando di aggiungere un ContextMenu agli elementi in un ListBox in WPF;WPF: Come aprire un ContextMenu da tutte le aree di un controllo Grid

<ListBox.ItemTemplate> 
    <DataTemplate> 
     <Border>       
      <Grid> 
       <Grid.ContextMenu> 
        <ContextMenu>          
         <MenuItem Header = "Menu item 1"/> 
         <MenuItem Header = "Menu item 2"/> 
         <MenuItem Header = "Menu item 3"/> 
        </ContextMenu> 
       </Grid.ContextMenu> 
        ........ 
        ........ 
      </Grid> 
     </Border> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 

Il problema è che il ContextMenu si aprirà solo quando si fa clic sul contesto reale della griglia, voglio essere in grado di aprire il menu facendo clic ovunque sulla voce Casella di riepilogo.

Devo spostare la griglia in qualche altro controllo?

+0

Vedi http://stackoverflow.com/questions/13420994/how-to-display-context-menu-for-treeview-item- in-a-gerarchico-dati-modello-in/28310591 # 28310591 – Contango

risposta

17

Sono trascorsi diversi mesi da quando ho sviluppato un solido sviluppo WPF (è stato spostato dallo sviluppo di applicazioni a un vero team di gioco).

Dalla memoria, si desidera impostare la proprietà ContextMenu su Border e quindi impostare Border.Background=Transparent. Impostando lo sfondo su trasparente si assicura che partecipi al rilevamento dei colpi.

Soluzione alternativa, sarebbe garantire che l'elemento Grid si estendesse orizzontalmente e verticalmente per adattarsi al contenitore.

...

tirare Anche il ContextMenu come una risorsa statica, così che è sarà più facile da trovare/modificare in futuro.

Spero che questo aiuti (e la mia memoria non mi delude).

EDIT: Ho già risposto a una domanda simile su StackOverflow in precedenza, vedere la risposta allo WPF: Displaying a Context Menu for a GridView's Items. Questa risposta è più completa in quanto pone l'accento sullo ListItem.

Problemi correlati