继上节动态的添加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,如需转载请自行联系原作者