2009-09-09 8 views
6

Je suis en train de réaliser ce qui suit:Comment définir ContextMenu d'un élément lié?

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

Mais il jette l'exception suivante:

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 

Répondre

5

Essayez ceci:

<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, mais pourquoi? Les autres propriétés peuvent être définies sans utiliser de ressource statique ou dynamique. – jrwren

+1

@jrwren, Bon point. Mon sentiment est que si vous le faites de la façon dont il est montré dans la question, un menu contextuel est créé par élément de menu, ce qui est potentiellement inutile lorsque vous en avez seulement besoin. Je sais que ce n'est pas une explication concluante cependant. –

+1

J'aimerais une réponse concrète. Savoir pourquoi aiderait certainement ma compréhension de WPF. – jrwren

Questions connexes