2009-09-09 13 views
6

Sto cercando di raggiungere i seguenti obiettivi:Come impostare ContextMenu di un oggetto associato?

<Style TargetType="ListBoxItem"> 
    <Setter Property="ContextMenu"> 
     <Setter.Value> 
      <ContextMenu> 
       <MenuItem Name="mnuEdit" Header="_Edit" Click="MenuItem_Click" /> 
      </ContextMenu> 
     </Setter.Value> 
    </Setter> 
<Style> 

Ma getta la seguente eccezione:

Cannot add content of type 'System.Windows.Controls.ContextMenu' 
to an object of type 'System.Object'. 
Error at object 'System.Windows.Controls.ContextMenu' 
in markup file blah blah blah 

risposta

5

Prova a modificare:

<ContextMenu x:Key="contextMenu"> 
    <MenuItem Name="mnuEdit" Header="_Edit" Click="MenuItem_Click" /> 
</ContextMenu> 

<Style TargetType="ListBoxItem"> 
    <Setter Property="ContextMenu" Value="{DynamicResource contextMenu}" /> 
</Style> 
+0

ok, ma perché? Altre proprietà sono modificabili senza utilizzare una risorsa statica o dinamica. – jrwren

+1

@jrwren, buon punto. La mia _guess_ è che se lo fai nel modo in cui viene mostrato nella domanda, viene creato un menu di scelta rapida per ogni voce di menu, che è potenzialmente dispendioso quando ne hai solo bisogno. So che non è una spiegazione conclusiva però. –

+1

Mi piacerebbe una risposta concreta. Sapere perché sarebbe sicuramente utile per la mia comprensione di WPF. – jrwren