WPF中ListBox的上下文菜单项

时间:2016-06-13 18:54:45

标签: c# wpf listbox contextmenu

我想在WPF中右键单击ListBoxItems时显示ContextMenu。我尝试下面的代码,但ContextMenu显示ListBoxItems也不存在。我想要的是只在右键单击ListBoxItems时显示ContextMenu。

<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 任何人都可以帮我解决这个问题。提前致谢

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

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

尝试使用

之类的东西
<ListBox x:Name="listofConnectedItems" Grid.Column="0" Grid.Row="0" BorderThickness="5" Width="200" Height="200"...

然后在列表框外右键单击