如何在我的窗口同时显示两个ContextMenu
?
这是我的班级
public partial class Window1 : Window
{
ContextMenu contextMenu1 = new ContextMenu();
ContextMenu contextMenu2 = new ContextMenu();
public Window1()
{
InitializeComponent();
contextMenu1.Items.Add("Hello1");
contextMenu2.Items.Add("Hello2");
contextMenu1.Placement = System.Windows.Controls.Primitives.PlacementMode.Relative;
contextMenu2.Placement = System.Windows.Controls.Primitives.PlacementMode.Relative;
contextMenu1.PlacementTarget = rectangle1;
contextMenu2.PlacementTarget = rectangle2;
contextMenu1.StaysOpen = true;
contextMenu2.StaysOpen = true;
}
private void button1_Click(object sender, RoutedEventArgs e)
{
contextMenu1.IsOpen = true;
contextMenu2.IsOpen = true;
}
}
答案 0 :(得分:2)
通常情况下,单击其他位置而不是上下文菜单本身时,上下文菜单将消失。因此,同时打开两个上下文菜单将涉及一些特殊处理。
除此之外,此设置很可能会导致用户感到困惑。
也许您应该考虑其他选项(工具栏,属性面板,级联上下文菜单)
修改强>
现在您已将代码添加到问题中,我更担心这种方法。你想给用户提供什么?您应该只使用Grids或DockPanel而不是矩形,并为它们添加常规菜单:
<DockPanel Width="200"
Height="200">
<Menu DockPanel.Dock="Top">
<MenuItem Header="Hello1" />
</Menu>
<Grid />
</DockPanel>
<DockPanel Width="200"
Height="200">
<Menu DockPanel.Dock="Top">
<MenuItem Header="Hello2" />
</Menu>
<Grid />
</DockPanel>
</StackPanel>
答案 1 :(得分:1)
您可以使用Popup控件并捕获右键单击事件以显示它。
不幸的是,你将从头开始并且必须重建上下文菜单,但是一次打开两个就没有问题。
答案 2 :(得分:0)
在不知道你想要做的很多细节的情况下 - 它是WPF!所以你可以像你想要的那样设计风格。 您可以通过鼠标右键单击显示对话框/用户控件/ Windows,并像上下文菜单一样设置样式,但它们应该看起来像。有了这个,您可以完全控制您想要显示的内容......