Silverlight实用窍门系列:4.Silverlight 4.0添加鼠标右键菜单和Silverlight全屏模式的进入退出。【附带源码实例】
继上节动态的添加Rectangle矩形框所讲。在实际应用中,我们动态添加矩形框,然后使用鼠标右键点击该矩形框,得到一个弹出窗口,再为此矩形框关联一些实际信息。即可实现用户自定义的配置页面。本节将讲两个小技巧:一.鼠标右键菜单。二.Silverlight全屏模式。
一.使用鼠标右键菜单。在这里我们需要单独引入两个Dll文件。(右键项目名称-->“添加引用”-->寻找到System.Windows.Controls.Input.Toolkit.dll[可以从本文源代码中找到])
System.Windows.Controls;
System.Windows.Controls.Input.Toolkit;
MainPage.xaml代码如下
<UserControl x:Class= "SLRightMouseButton.MainPage" xmlns:my= "clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit" xmlns= "http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x= "http://schemas.microsoft.com/winfx/2006/xaml" Width= "640" Height= "480" > <Canvas x:Name= "LayoutRoot" > <Rectangle x:Name= "ti" Width= "150" Height= "150" RadiusX= "5" RadiusY= "5" Fill= "Blue" ></Rectangle> <my:ContextMenuService.ContextMenu> <my:ContextMenu Name= "mymenu" > <my:MenuItem Header= "关联地区" Click= "MenuItem_Click" /> <my:Separator/> <my:MenuItem Header= "关联页面" Click= "MenuItem_Click" /> <my:Separator/> <my:MenuItem Header= "进入全屏" Click= "MenuItem_Click" /> </my:ContextMenu> </my:ContextMenuService.ContextMenu> </Canvas> </UserControl> |
在这里很明显是为名为ti的Rectangle矩形区域之内可以被右键点击,然后右键点击得到右键菜单“关联地区”“关联页面”“进入全屏”三项。这三个项目都加在到同一个点击事件MenuItem_Click中处理。
MainPage.xaml.cs文件关键代码处理MenuItem_Click事件代码如下
/// <summary> /// 鼠标右键选择相应的项的事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void MenuItem_Click( object sender, RoutedEventArgs e) { MenuItem menuItem = (MenuItem)sender; switch (menuItem.Header.ToString()) { case "关联地区" : MessageBox.Show( "关联地区" ); //在此可以弹出一个窗口显示关联地区的子窗口。然后选择相应的数据,为此Rectangle关联地区 break ; case "关联页面" : MessageBox.Show( "关联页面" ); //在此可以弹出一个窗口显示关联页面的子窗口。然后选择相应的数据,为此Rectangle关联页面 break ; case "进入全屏" : menuItem.Header = FullScreens(menuItem.Header.ToString()); //调用FullScreens函数来设置当前是否全屏,以及获取下次点击鼠标右键获得的右键菜单Header字。 break ; case "取消全屏" : menuItem.Header = FullScreens(menuItem.Header.ToString()); break ; default : break ; } mymenu.IsOpen = false ; //右键菜单关闭 } /// <summary> /// 是否进入全屏 /// </summary> /// <param name="IsScreen">全屏参数</param> /// <returns></returns> private string FullScreens( string IsScreen) { Application.Current.Host.Content.IsFullScreen = !Application.Current.Host.Content.IsFullScreen; if (IsScreen == "进入全屏" ) { IsScreen = "取消全屏" ; } else { IsScreen = "进入全屏" ; } return IsScreen; } } |
在代码中 使用MenuItem menuItem = (MenuItem)sender;捕捉到触发本事件的对象,然后判断当前对象的Header的值是多少?然后进行相应的处理就可以了。值得注意的是这里牵扯到了我们今天需要将的第二个小知识点。
二.Silverlight的全屏模式的进入。
Application.Current.Host.Content.IsFullScreen = !Application.Current.Host.Content.IsFullScreen;
就是这句简单的代码将可以让你的Silverlight程序进入或者退出全屏模式。
本实例源码基于Silverlight 4.0和VS 2010开发。
本小节的源码附上点击 https://files.cnblogs.com/chengxingliang/SLRightMouseButton.rar
另外所需DLL下载点击:System.Windows.Controls.Data.Input.rar
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架