也許我還不知道你的意圖:您可以定義不同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