如何在MenuItem上显示列表框?

时间:2017-11-02 05:40:32

标签: c# wpf listbox menuitem

我有这样的WPF代码:

<ListBox SelectedItem="{Binding SelectedItem}">
   <ListBox.ContextMenu>
       <ContextMenu>
           <MenuItem Header="Delete" Click="MenuItem_Delete_Click" />
           <MenuItem Header="Replace" Click="MenuItem_Replace_Click">
               <ListBox SelectionMode="Single" SelectedItem="{Binding ReplaceItem}" />
           </MenuItem>
           <MenuItem Header="Insert" Click="MenuItem_Insert_Click">
               <ListBox SelectionMode="Single" SelectedItem="{Binding InsertItem}}" />
           </MenuItem>
</ListBox>

但是如下所示:

鼠标离开时 When mouse leave

鼠标开启时

When Mouse on

那么我应该如何解决这个问题?提前谢谢!

2 个答案:

答案 0 :(得分:0)

不是在MenuItem上使用列表框,为什么不尝试将菜单项添加到现有的菜单项(对于您的情况是&#34;插入&#34;和&#34;替换&#34;) 让我们看看我的例子。

            MenuItem mi = new MenuItem();
            mi.Header = "PX1-20T-D-B";
            NameOfYourMenuItem.Items.Add(mi);
            mi.Click += new RoutedEventHandler(MenuItemClick);

您还可以为每个人添加eventHandler。

答案 1 :(得分:0)

不使用MenuItem中的ListBox或在代码后面添加子菜单项,而是尝试使用DataTemplates。我假设你有一个包含你的列表框项目的集合。

<MenuItem Header="Replace" Click="MenuItem_Replace_Click" ItemsSource="{Binding ReplaceItemsCollection}">
    <MenuItem.ItemTemplate>
        <DataTemplate>
            <MenuItem Header="{Binding}" Click="replaceSubMenuItem_Clicked"/>
        </DataTemplate>
    </MenuItem.ItemTemplate>
</MenuItem>
<MenuItem Header="Replace" Click="MenuItem_Replace_Click" ItemsSource="{Binding InsertItemsCollection}">
    <MenuItem.ItemTemplate>
        <DataTemplate>
            <MenuItem Header="{Binding}" Click="insertSubMenuItem_Clicked"/>
        </DataTemplate>
    </MenuItem.ItemTemplate>
</MenuItem>

在您的代码中添加:

private void replaceSubMenuItem_Clicked(object sender, EventArgs e)
{
    // sender is the MenuItem. Just parse it.
}

private void insertSubMenuItem_Clicked(object sender, EventArgs e)
{
    // ...
}