2009-09-09 8 views
6

Ich versuche folgendes zu erreichen:Wie setze ich ContextMenu eines gebundenen Objekts?

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

Aber es wirft die folgende Ausnahme:

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 

Antwort

5

dies stattdessen versuchen:

<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, aber warum? Andere Eigenschaften können ohne Verwendung einer statischen oder dynamischen Ressource festgelegt werden. – jrwren

+1

@jrwren, Guter Punkt. Mein _guess_ ist, dass, wenn Sie es so machen, wie es in der Frage gezeigt wird, ein Kontextmenü pro Menüelement erstellt wird, das potenziell verschwenderisch ist, wenn Sie nur eines benötigen. Ich weiß, dass das keine schlüssige Erklärung ist. –

+1

Ich würde eine konkrete Antwort lieben. Zu wissen, warum würde definitiv mein Verständnis von WPF helfen. – jrwren

Verwandte Themen