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

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

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

你可能感兴趣的:(silverlight)