Aquí vemos como capturar el evento del botón derecho en silverlight.
Este evento desde la salida de silverlight ha estado inactivo, y dicen que en la siguiente versión, silverlight 4, estará disponible (también dijeron eso en la versión 3).
Cuando haces click derecho en la aplicación Silverlight te muestra un menú contextual y un dialogo de configuración.
¿Y si quieres usar el botón derecho en tu aplicación silverlight? El proceso es muy sencillo, y aquí os detallare unos pasos que deberéis de seguir para poder utilizar dicho evento y mostrar un menú contextual propio.
Paso 1: Tenemos que establecer el control de Silverlight para ventanas. En la pagina web del proyecto (suele ser default.aspx) que contiene el control Silverlight añadir la etiquetawindowless=”true”.
Paso 2: Introducimos el contextmenu donde queramos capturar el evento click derecho. Dentro del xaml creamos una nueva clase llamada ContextMenuInterceptor. En el constructor de esta clase capturamos un evento llamado “OnContextMenu” con HtmlPage.Document.AttachEvent (deberás agregar la referencia System.Window.Browser).
Dentro de este evento llamamos a e.PeventDefault(). Esto cancela la propagación del evento click derecho para que silverlight no lo reciba (así no mostrará su menu contextual).
En este punto, es cuando usted esta capturando el evento y podra mostrar o hacer cualquier cosa. En el ejemplo que pongo a continuación utilizo yo un TextBlock para mostrar cuando capturamos el click derecho.
Page.xml.cs
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; using System.Windows.Browser; namespace SilverlightApplication15 { public partial class Page : UserControl { ContextMenuInterceptor _cmi = null; public Page() { InitializeComponent(); _cmi = new ContextMenuInterceptor(MyField); } } public class ContextMenuInterceptor { TextBlock TextField; public ContextMenuInterceptor(TextBlock textField) { TextField = textField; HtmlPage.Document.AttachEvent("oncontextmenu", this.OnContextMenu); } private void OnContextMenu(object sender, HtmlEventArgs e) { TextField.Text = "Right Clicked Blocked at "+e.OffsetX+","+e.OffsetY; e.PreventDefault(); } } }


