2011-06-02 169 views
0

目標:
顯示不同的上下文菜單,如果右鍵單擊列表視圖中的一行或右鍵單擊列表視圖內部而不選擇行。顯示不同的上下文菜單

問題:
難以找到一種解決方案,一旦點擊某物就能顯示不同的上下文菜單。


private void lstvdMonth_MouseRightButtonUp(object sender, MouseButtonEventArgs e) 
{ 



    ContextMenu myContextMenu = new ContextMenu();; 

    if (MouseButtonState.Released == e.RightButton) 
    { 


     MenuItem menuItem3 = new MenuItem(); 
     menuItem3.Header = "Add quantity"; 
     myContextMenu.Items.Add(menuItem3); 
     menuItem3.Click += new RoutedEventHandler(menuItem3_Click); 

     MenuItem menuItem2 = new MenuItem(); 
     menuItem2.Header = "Delete"; 
     myContextMenu.Items.Add(menuItem2); 
     menuItem2.Click += new RoutedEventHandler(menuItem2_Click); 
    } 
    else 
    { 
     MenuItem menuItem1 = new MenuItem(); 
     menuItem1.Header = "New product"; 
     myContextMenu.Items.Add(menuItem1); 
     menuItem1.Click += new RoutedEventHandler(menuItem1_Click); 
    } 

    myContextMenu.IsOpen = true; 
} 

回答

0

我想你應該測試在if是,是否有任何物品在ListView(例如SelectedItem == null)進行選擇。

您究竟如何期待鼠標按鍵在MouseUp事件中永遠處於關閉狀態?

+0

這是我遇到的問題之一。如果您在列表中選擇了一行,然後右鍵單擊列表視圖區域內的空白區域。那麼你不能這樣做,因爲你已經做出選擇。您必須通過在列表視圖中使用ctrl +左鍵單擊來取消選擇以刪除選擇標記。 當它是'技術觀點回合時,我不知道,但在這種情況下,我將用戶界面作爲一個數字1,然後我去處理技術問題。 – 2011-06-02 22:08:57

+0

我可以通過事件「lstvdMonth_MouseRightButtonDown」和「lstvdMonth_MouseRightButtonUp」來解決這個問題。 – 2011-06-04 21:21:50