专栏首页我和未来有约会如何在silverlihgt中使用右键

如何在silverlihgt中使用右键

一般我们在silverlight中点击右键会出现如下的对话筐.

在flash中 其提供了一个可定制话的右键菜单系统.(ContextMenu)

这个在silverlight中也是一样可以做到的.

过程如下:

1.添加一个<TextBlock>到Page.xaml中

<UserControl x:Class="rightClick.Page"     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"     Width="400" Height="300"> <Grid x:Name="LayoutRoot" Background="White"> <TextBlock x:Name="MyField">Right click please.</TextBlock> </Grid> </UserControl>

2.在页面中设置silverlight的参数Windowless="true"

 <asp:Silverlight ID="Silverlight1" runat="server" Height="480px"

   MinimumVersion="2.0.30523" Source="~/ClientBin/rightClick.xap" Windowless="true" Width="640px"/>
 
<object data="data:application/x-silverlight," type="application/x-silverlight-2-b2" width="100%" height="100%">
<param name="source" value="ClientBin/rightClick.xap"/>
<param name="onerror" value="onSilverlightError"/>
<param name="background" value="white"/>
<param name="Windowless" value="true"/>
<a href="http://go.microsoft.com/fwlink/?LinkID=115261" style="text-decoration: none;">
<img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none"/>
</a>
</object>

3.最后修改Page.xaml.cs页面的代码

  • 新建立一个ContextMenuInterceptor类.这个类是用来处理页面中“OnContextMenu”事件的.在用到HTMLPage对象你需要引入System.Window.Browser命名空间.
  • 在调用e.PeventDefault()方法后,将会取消右键点击事件.所以silverlight不会捕捉到它.
  • 在这里我们已经成功的拦截了右键点击事件,做我们想做的任何事情了.;)

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 rightClick
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;
//Cancels the event if it is cancelable.
e.PreventDefault();
 

  原文地址:http://silverlight.net/blogs/msnow/archive/2008/07/01/tip-of-the-day-14-how-to-right-click-on-a-silverlight-application.aspx

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 一个最基本的布局控件-panel

    Silverlight做了两个布局的控件了。 Silverlight控件 - Carrousel Silverlight控件 - ScatterView 所...

    用户1172164
  • [Silverlight动画]转向行为 - 躲避行为

    躲避就是追捕的反行为。就像追捕类似于寻找,躲避类似于避开。 本质上讲,是预测出机车将要去到的位置并远离它。在这里所有的原则都和追捕相同。实际上,就连实现都几乎一...

    用户1172164
  • silverlight向服务器post数据类

    using System; using System.Net; using System.Windows; using System.Windows.Co...

    用户1172164
  • WCF系列教程之WCF服务宿主与WCF服务部署

    本文参考自http://www.cnblogs.com/wangweimutou/p/4377062.html,纯属读书笔记,加深记忆。 一、简介 任何一个程序...

    郑小超.
  • C# WPF基础之Timer

    。WPF性能跟WinForm没得比,只是可以做出漂亮的界面, , 我推荐几个入门教程吧.。首先WPF常规开发都是用MVVM模式,MVVM的框架这里推荐MVVM...

    zls365
  • 七夕快到了!表白小程序制作详解,撩翻你的女神!

    大家可能都会在抖音上刷过,那种表白小程序,但在我看来表白还是亲口说出来比较好,这类小程序只适合在平常的一些小节日给对方一个惊喜。话不多说,现在进入正题:

    一墨编程学习
  • MySQL练习题(一)

    -- 1.查询各部门中薪资最低和最高的数据,包括的子段有部门编号、部门名词、员工名称、最高薪资、最第薪资.

    A梦多啦A
  • 3月3号 阶段性考试 IO

    3月3号 阶段性考试(考试6个小时,讲评+重写6个小时): 记录完成每一题所需要的时长。 1、将a.jpg的文件字节与b.jpg文件文件字节合并为一个文件c.j...

    静心物语313
  • 时域音频分离模型登GitHub热榜,效果超传统频域方法,Facebook官方出品

    用AI对歌曲音轨的分离研究很多,不过大多数都是在频域上进行的。这类方法先把声音进行傅立叶变换,再从频谱空间中把人声、乐曲声分别抽离出来。

    量子位
  • 时域音频分离模型登GitHub热榜,效果超传统频域方法,Facebook官方出品

    用AI对歌曲音轨的分离研究很多,不过大多数都是在频域上进行的。这类方法先把声音进行傅立叶变换,再从频谱空间中把人声、乐曲声分别抽离出来。

    代码医生工作室

扫码关注云+社区

领取腾讯云代金券