2016-06-13 103 views
0

我想在WPF中右键单击ListBoxItems时显示ContextMenu。我尝试了下面的代码,但是ContextMenu显示ListBoxItems不在那里。我想要的只是在只有ListBoxItems的右键单击时才显示ContextMenu。WPF中ListBox的上下文菜单项

<Grid> 
<ListBox x:Name="listofConnectedItems" Grid.Column="0" Grid.Row="0" ItemsSource="{Binding MyItems}" MouseRightButtonDown="listofConnectedItems_MouseRightButtonDown" ContextMenuOpening="listofConnectedItems_ContextMenuOpening" > 
     <ListBox.ItemContainerStyle> 
      <Style TargetType="{x:Type ListBoxItem}"> 
       <Setter Property="Padding" Value="10"> 

       </Setter> 
      </Style> 
     </ListBox.ItemContainerStyle> 
     <ListBox.ContextMenu> 
      <ContextMenu> 
       <MenuItem Header="_Start" Click="MenuItemStart_Click" /> 
       <MenuItem Header="Sto_p" Click="MenuItemStop_Click" /> 
       <MenuItem Header="_Clear" Click="MenuItemClear_Click" /> 
      </ContextMenu> 
     </ListBox.ContextMenu> 

    </ListBox> 
</Grid> 

` 这里我附上截图。 enter image description here 任何人都可以请我通过这个。在此先感谢

+1

你尝试将它设置在'ItemsContainerStyle'为'ListBoxItem'而不是整个'ListBox' – dkozl

+0

您现在正在为整个LB设置CM。 – AnjumSKhan

+0

在ListBoxItem中找不到@AnjumSKhan CM属性。这就是我问的,如何将CM只放置到ListBoxItems。 – Gopi

回答

0

我认为问题是,您没有指定列表框的高度和宽度,所以它automaticaly缩放到窗口大小。所以技术上你的代码工作正常,但是listbox无处不在。

尝试用类似

<ListBox x:Name="listofConnectedItems" Grid.Column="0" Grid.Row="0" BorderThickness="5" Width="200" Height="200"... 

,然后右击列表框外

+0

我说ContextMenu显示在listboxitems不存在的列表框中。身高不是问题。在运行时我添加listboxitems,所以我没有指定高度。 – Gopi

1

应该在IntemContainerStyle

<ListBox.ItemContainerStyle> 
    <Style TargetType="ListBoxItem"> 
     <Setter Property="ContextMenu"> 
      <Setter.Value> 
       <ContextMenu> 
        <MenuItem Header="Open" /> 
        <MenuItem Header="Edit" Command="Binding 
       </ContextMenu> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</ListBox.ItemContainerStyle>