可能有的朋友正在想如何用Silverlight实现右键菜单栏,那么这篇文章可能会对你有很大帮助~
上次说要给大家晒晒在Silverlight中捕捉鼠标右键的方法.
这里还会用我们常见的对象HtmlPage(System.Windows.Browser;)
在这个对象下有一个Document属性,这个属性中的方法相信大家都有点儿了解了吧 上次讲Cookie的时候也用到了他.
这次捕获鼠标右键的工作也要交给他了~
呵呵 还是先给大家share下代码吧'
首先要把我们Silverlight控件的windowless属性设置为true.
<asp:Silverlight ID="Xaml1" Windowless="true" runat="server" Source="~/ClientBin/SilverlightApplication1.xap" MinimumVersion="2.0.30523" Width="100%" Height="100%" />
<param name="windowless" value="true" />
<param name="windowless" value="true" />
<UserControl x:Class="RightClick_Silverlight.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>
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>
其实捕获鼠标的原理很简单 就是在pageload的时候给你的控件添加一个捕获事件
用的就是我们之前所说的HtmlPage对象
public Page()
{
HtmlPage.Document.AttachEvent("oncontextmenu", this.OnContextMenu);
}
private void OnContextMenu(object sender, HtmlEventArgs e)
{
string X = e.OffsetX;
string y = e.OffsetY;
e.PreventDefault();
}
{
HtmlPage.Document.AttachEvent("oncontextmenu", this.OnContextMenu);
}
private void OnContextMenu(object sender, HtmlEventArgs e)
{
string X = e.OffsetX;
string y = e.OffsetY;
e.PreventDefault();
}
相信看到这里大家都明白了吧~ 这里都是我搜集来的小技巧希望对大家有所帮助~
Source code: MouseRightClick