• Silverlight 4.0添加鼠标右键菜单和Silverlight全屏模式的进入退出


    说明:本文出处:http://www.cnblogs.com/chengxingliang/archive/2011/02/14/1954399.html#2627673(非常感谢)

    在实际应用中,我们动态添加矩形框,然后使用鼠标右键点击该矩形框,得到一个弹出窗口,再为此矩形框关联一些实际信息。即可实现用户自定义的配置页面。本节将讲两个小技巧:一.鼠标右键菜单。二.Silverlight全屏模式。

         一.使用鼠标右键菜单。在这里我们需要单独引入两个Dll文件。(右键项目名称-->“添加引用”-->寻找到System.Windows.Controls.Input.Toolkit.dll[可以从本文源代码中找到])

         System.Windows.Controls;

         System.Windows.Controls.Input.Toolkit;

         MainPage.xaml代码如下

    View Code
     1 <UserControl x:Class="SLRightMouseButton.MainPage"
     2 
     3     xmlns:my="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input.Toolkit"
     4 
     5     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     6 
     7     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     8 
     9     Width="640" Height="480">
    10 
    11     <Canvas x:Name="LayoutRoot">
    12 
    13         <Rectangle x:Name="ti" Width="150" Height="150" RadiusX="5" RadiusY="5" Fill="Blue"></Rectangle>
    14 
    15         <my:ContextMenuService.ContextMenu>
    16 
    17             <my:ContextMenu Name="mymenu">
    18 
    19                 <my:MenuItem Header="关联地区" Click="MenuItem_Click"/>
    20 
    21                 <my:Separator/>
    22 
    23                 <my:MenuItem Header="关联页面" Click="MenuItem_Click"/>
    24 
    25                 <my:Separator/>
    26 
    27                 <my:MenuItem Header="进入全屏" Click="MenuItem_Click"/>
    28 
    29             </my:ContextMenu>
    30 
    31         </my:ContextMenuService.ContextMenu>
    32 
    33     </Canvas>
    34 
    35 </UserControl>

    在这里很明显是为名为ti的Rectangle矩形区域之内可以被右键点击,然后右键点击得到右键菜单“关联地区”“关联页面”“进入全屏”三项。这三个项目都加在到同一个点击事件MenuItem_Click中处理。

    MainPage.xaml.cs文件关键代码处理MenuItem_Click事件代码如下

    View Code
     1 /// <summary>
     2 
     3       /// 鼠标右键选择相应的项的事件
     4 
     5       /// </summary>
     6 
     7       /// <param name="sender"></param>
     8 
     9       /// <param name="e"></param>
    10 
    11       private void MenuItem_Click(object sender, RoutedEventArgs e)
    12 
    13       {
    14 
    15           MenuItem menuItem = (MenuItem)sender;
    16 
    17           switch (menuItem.Header.ToString())
    18 
    19           {
    20 
    21               case "关联地区":
    22 
    23                   MessageBox.Show("关联地区");//在此可以弹出一个窗口显示关联地区的子窗口。然后选择相应的数据,为此Rectangle关联地区
    24 
    25                    
    26 
    27                   break;
    28 
    29               case "关联页面":
    30 
    31                   MessageBox.Show("关联页面");//在此可以弹出一个窗口显示关联页面的子窗口。然后选择相应的数据,为此Rectangle关联页面
    32 
    33                   break;
    34 
    35               case "进入全屏":
    36 
    37                   menuItem.Header = FullScreens(menuItem.Header.ToString());//调用FullScreens函数来设置当前是否全屏,以及获取下次点击鼠标右键获得的右键菜单Header字。
    38 
    39                   break;
    40 
    41               case "取消全屏":
    42 
    43                   menuItem.Header = FullScreens(menuItem.Header.ToString());
    44 
    45                   break;
    46 
    47               default:
    48 
    49                   break;
    50 
    51           }
    52 
    53           mymenu.IsOpen = false;//右键菜单关闭
    54 
    55       }
    56 
    57       /// <summary>
    58 
    59       /// 是否进入全屏
    60 
    61       /// </summary>
    62 
    63       /// <param name="IsScreen">全屏参数</param>
    64 
    65       /// <returns></returns>
    66 
    67       private string FullScreens(string IsScreen)
    68 
    69       {
    70 
    71           Application.Current.Host.Content.IsFullScreen = !Application.Current.Host.Content.IsFullScreen;
    72 
    73           if (IsScreen == "进入全屏")
    74 
    75           {
    76 
    77               IsScreen = "取消全屏";
    78 
    79           }
    80 
    81           else
    82 
    83           {
    84 
    85               IsScreen = "进入全屏";
    86 
    87           }
    88 
    89           return IsScreen;
    90 
    91       }
    92 
    93   }

    在代码中 使用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

  • 相关阅读:
    Codeforces Round #680 (Div. 2, based on Moscow Team Olympiad)(A->C(质因子分解))
    Acwing 143. 最大异或对(字典树+贪心)
    字典树学习笔记(板子)
    关于位运算(>>,<<,|,&,^)的笔记总结
    第 45 届国际大学生程序设计竞赛(ICPC)亚洲网上区域赛模拟赛 A.Easy Equation(差分数组)(a+b+c=d的种数)
    A
    Educational Codeforces Round 97 (Rated for Div. 2)B. Reverse Binary Strings(反转子串)
    Educational Codeforces Round 97 (Rated for Div. 2) A. Marketing Scheme
    UI测试 常用检查点
    负载测试、压力测试
  • 原文地址:https://www.cnblogs.com/zxbzl/p/2961381.html
Copyright © 2020-2023  润新知