2009-09-09 76 views
6

我想实现以下目标:如何设置绑定项目的ContextMenu?

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

但它抛出以下异常:

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 

回答

5

试试这个:

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

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

不错,但为什么呢?其他属性可以在不使用静态或动态资源的情况下进行设置。 – jrwren 2011-05-11 20:16:42

+1

@jrwren,好点。我的_guess_是,如果按照它在问题中显示的方式进行操作,则会为每个菜单项创建一个上下文菜单,当您只需要一个菜单​​项时这可能会浪费。我知道这不是一个确凿的解释。 – 2011-05-12 07:30:04

+1

我很想有一个具体的答案。知道为什么肯定会帮助我理解WPF。 – jrwren 2011-05-12 14:38:45

相关问题