2011-04-06 34 views
0

如何在同一時間在我的窗口上顯示兩個ContextMenu兩個ContextMenus同時進行多點觸控

這是我

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

你必須有一個需要這樣做的理由,你能解釋爲什麼嗎?而且,你是否可以不僅僅使用一個帶有分頻器的單一,更長的菜單? – 2011-04-06 07:03:55

+0

請參閱我的答案,瞭解您的代碼的替代方案。 – 2011-04-06 07:42:47

回答

1

您可以使用Popup控件並捕獲右鍵單擊事件以顯示它。

不幸的是,你將從頭開始,將不得不重建上下文菜單,但一次打開兩個將不會有問題。

2

通常點擊別的地方比在上下文菜單本身在上下文菜單將消失。因此,同時打開兩個上下文菜單將涉及一些特殊處理。

除此之外,此設置很可能會導致用戶感到困惑。

也許你應該考慮的其他選項(工具欄,屬性面板,級聯上下文菜單)

編輯

現在你加入你的代碼我更加擔心這種做法的問題。你想向用戶提供什麼?您只需要使用網格或DockPanels而不是矩形,並添加常規菜單對他們說:

<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> 
+0

我在嘗試製作一個多輸入(多個鼠標)應用程序,兩個用戶可以使用我的應用程序。在同一時間 – 2011-04-06 07:41:00

+0

啊,現在你是有道理的。看我的編輯。 – 2011-04-06 07:43:27

0

不知道很多詳細的關於你想做的事 - 這是WPF!所以你可以像你想要的一樣設計風格。 您可以通過右鍵單擊來顯示對話框/用戶控件/ Windows,並像上下文菜單一樣設置它們的樣式,或者它們應該看起來像。有了這個,您可以完全控制要顯示的內容...