在目前的WPF版本中,很多的控件都有一個ContextMenu的屬性,可以設置組件的右鍵菜單,這點確實是很方便,但是有些時候我們可能會需要當單擊鼠標左鍵才彈出這個ContextMenu,而不是單擊鼠標右鍵(即:當單擊鼠標右鍵的時候不彈出該ContextMenu),這樣我們就能很方便的實現類似Flex中設置彈出式菜單的效果...
首先:
然后,設置一下:
1 <Button Name="btnMenu" Width="50" Height="25" Content="菜單" Initialized="btnMenu_Initialized"> 2 <Button.ContextMenu> 3 <ContextMenu Name="contextMenu"> 4 <MenuItem Header="復制"/> 5 <MenuItem Header="粘貼"/> 6 <MenuItem Header="剪切"/> 7 <MenuItem Header="刪除"/> 8 </ContextMenu> 9 </Button.ContextMenu> 10 </Button>
看Initialized="btnMenu_Initialized"的實現:
1 private void btnMenu_Initialized(object sender, EventArgs e) 2 { 3 //設置右鍵菜單為null 4 this.btnMenu.ContextMenu = null; 5 }
接着,設置單擊鼠標左鍵彈出菜單:
1 private void btnMenu_Click(object sender, RoutedEventArgs e) 2 { 3 //目標 4 this.contextMenu.PlacementTarget = this.btnMenu; 5 //位置 6 this.contextMenu.Placement = PlacementMode.Top; 7 //顯示菜單 8 this.contextMenu.IsOpen = true; 9 }