也许我还不知道你的意图:您可以定义不同ContextMenu
无论是在XAML
或Code-behind
这样的:
XAML:
<ListBox PreviewMouseDown="ListBox_PreviewMouseDown">
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<ContentPresenter>
<ContentPresenter.ContextMenu>
<ContextMenu>
<MenuItem Header="ListBoxItem"></MenuItem>
<MenuItem Header="ListBoxItem"></MenuItem>
<MenuItem Header="ListBoxItem"></MenuItem>
</ContextMenu>
</ContentPresenter.ContextMenu>
</ContentPresenter>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.ItemContainerStyle>
<ListBoxItem>Item1</ListBoxItem>
<ListBoxItem>Item2</ListBoxItem>
<ListBoxItem>Item2</ListBoxItem>
<ListBoxItem>Item2</ListBoxItem>
<ListBox.ContextMenu>
<ContextMenu>
<MenuItem Header="ListBox"></MenuItem>
<MenuItem Header="ListBox"></MenuItem>
<MenuItem Header="ListBox"></MenuItem>
</ContextMenu>
</ListBox.ContextMenu>
</ListBox>
代码隐藏:
private void ListBox_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
if(e.ChangedButton == MouseButton.Right)
{
var listBoxItem = e.Source as ListBoxItem;
if (listBoxItem != null)
{
// clicked on ListBoxItem, customize the ContextMenu
}
var listBox = e.Source as ListBox;
if (listBox != null)
{
// clicked on ListBox, customize the ContextMenu
}
}
}
请给出一些代码来解释你的问题更清楚吗? – Iron
你能展示你使用的逻辑以及你的逻辑与哪些事件相连接吗?您可以在资源中创建两个ContextMenu,并在ListBox.ContextMenu和ListBoxItem.ContextMenu中使用它们。 – Redouane
@Iron它不是一个编码问题,而是一个概念性问题:如何检测在部分填充的列表框中点击右键单击的内容。如果我有任何代码,我会显示它。但请参阅下面的解决方案。 – SezMe