[英]Menu item won't show context menu
我有一個按鈕,單擊該按鈕時會顯示一個ContextMenu。 在此ContextMenu中,我具有MenuItems。 如果左擊MenuItem,則應執行命令。 到目前為止,所有這些行為都可以通過以下代碼正常運行:
<Button.ContextMenu>
<ContextMenu>
<ContextMenu.ItemContainerStyle>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="Command" Value="{Binding StartContextMenuCommand}" />
<Setter Property="CommandParameter" Value="{Binding RelativeSource={RelativeSource Self}, Path=Header}" />
</Style>
</ContextMenu.ItemContainerStyle>
<MenuItem Header="{x:Static Name:ContextMenuStartNames.1}"/>
<MenuItem Header="{x:Static Name:ContextMenuStartNames.2}"/>
<MenuItem Header="{x:Static Name:ContextMenuStartNames.3}"/>
<MenuItem Header="{x:Static Name:ContextMenuStartNames.4}"/>
</ContextMenu>
</Button.ContextMenu>
現在,我希望每個菜單項都有一個帶有一個MenuItem的上下文菜單。 由於左鍵單擊會在MenuItem上調用命令,因此我希望右鍵單擊行為顯示以下ContextMenu:
<ContextMenu>
<MenuItem Header="Set Default"></MenuItem>
</ContextMenu>
我嘗試將其作為設置器放置在ItemContainerStyle中。 我也嘗試將其作為MenuItem的ContextMenu,但是我的任何嘗試均無濟於事。 我敢肯定,我可以想出一種簡單的方法來做到這一點,但我想保持它簡潔明了。
也許我聽不懂您的問題(我的英語不是……什么特別的東西):D但這如果您只想要多級上下文菜單應該可以工作:
<ContextMenu>
<MenuItem Header="Top Level 1">
<MenuItem Header="Sub Level" />
<MenuItem Header="Sub Level" />
</MenuItem>
<MenuItem Header="Top Level 2">
<MenuItem Header="Sub Level" />
<MenuItem Header="Sub Level" />
</MenuItem>
</ContextMenu>
這是我當前對這個問題的解決方法,但我一點都不喜歡。 我想盡可能避免代碼落后。
<ContextMenu.ItemContainerStyle>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="Command" Value="{Binding StartCommand}" />
<Setter Property="CommandParameter" Value="{Binding RelativeSource={RelativeSource Self}, Path=Header}" />
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu StaysOpen="True">
<MenuItem Header="Set As Default"/>
</ContextMenu>
</Setter.Value>
</Setter>
<EventSetter Event="PreviewMouseRightButtonUp" Handler="MenuItem_Click"/>
</Style>
</ContextMenu.ItemContainerStyle>
以及后面的代碼:
private void MenuItem_Click(object sender, RoutedEventArgs e)
{
ButtonContextMenu.StaysOpen = true;
(sender as MenuItem).ContextMenu.IsOpen = true;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.