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开发。

        本小节的源码附上点击  http://files.cnblogs.com/chengxingliang/SLRightMouseButton.rar 

        另外所需DLL下载点击:System.Windows.Controls.Data.Input.rar



    本文转自程兴亮博客园博客,原文链接:http://www.cnblogs.com/chengxingliang/archive/2011/02/14/1954399.html,如需转载请自行联系原作者

相关文章
|
开发框架 前端开发 .NET
|
前端开发 开发工具 数据库

热门文章

最新文章