我有这样的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>
但是如下所示:
鼠标离开时
鼠标开启时
那么我应该如何解决这个问题?提前谢谢!
答案 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)
{
// ...
}