參考了許多文章,覺得寫得挺好,但是總是不能簡化說明。
比如右鍵菜單,我們最關心的是如何屏蔽掉預設的菜單,
如何在右擊某個控制項的時候顯示對應的右鍵菜單。
如何構造產生右鍵菜單,如何響應右鍵菜單的事件。
這些問題寥寥幾句代碼就能說明問題了,但是高手都沒有直說。
當然這些文章包含了許多其他的知識點,值得以後參考。
以下是我的簡單實現:
<UserControl x:Class="TestSilverlightRightMouseClickDemo.UC_RightButton"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<Grid x:Name="LayoutRoot" Background="White" MouseRightButtonDown="LayoutRoot_MouseRightButtonDown">
<Button Content="右鍵菜單" Height="23" HorizontalAlignment="Left"
Margin="10,10,0,0" Name="btnRight" VerticalAlignment="Top" Width="75"/>
</Grid>
</UserControl>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
namespace TestSilverlightRightMouseClickDemo
{
public partial class UC_RightButton : UserControl
{
public UC_RightButton()
{
InitializeComponent();
BindMenu();//只為按鈕控制項綁定右鍵菜單
}
private void BindMenu()
{
ContextMenu cm = new ContextMenu();//建立右鍵菜單
MenuItem mi = new MenuItem();//建立右鍵功能表項目
mi.Header = "功能表項目";
mi.Click += MenuItem_Click;//為功能表項目註冊事件
cm.Items.Add(mi);
ContextMenuService.SetContextMenu(btnRight, cm);//為控制項綁定右鍵菜單
}
private void LayoutRoot_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
e.Handled = true;//屏蔽預設的右鍵菜單
}
private void MenuItem_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("右鍵菜單事件");
}
}
}
參考:
風雲的銀光志Silverlight4.0教程之使用滑鼠右鍵事件和滾輪事件
Silverlight4給DataGrid添加ContextMenu右鍵菜單
本文來自大氣象的部落格,原文地址:http://www.cnblogs.com/greatverve/archive/2010/07/07/silverlight-right-button.html