[SilverLight]扩展UserControl实现弹出效果
2008-12-24 11:54:19 来源:WEB开发网感觉SilverLight的编程方式更像WinForm一点,要是有WinForm中的Show方法和ShowDialog方法就可以更灵活的操作窗口了,这次我们就来给SilverLight的UserControl增加这两个方法:分别是Show() and ShowAsModal()。
基本原理是写个UserControl的基类BaseUserControl,在基类中实现这两个方法,需要弹出的UserControl继承这个基类就可以了,具体这两个方法的实现方式是利用SilverLight的PopUp对象。
如下代码就是我抄来并修改的UserControl基类:
BaseUserControl
usingSystem;
usingSystem.Net;
usingSystem.Windows;
usingSystem.Windows.Controls;
usingSystem.Windows.Documents;
usingSystem.Windows.Ink;
usingSystem.Windows.Input;
usingSystem.Windows.Media;
usingSystem.Windows.Media.Animation;
usingSystem.Windows.Shapes;
usingSystem.Windows.Controls.Primitives;
namespaceExpandUserControl
{
publicclassBaseUserControl:UserControl
{
#region私有字段
Popuppopup;
Gridgrid;
Canvascanvas;
#endregion
///<summary>
///构造函数
///</summary>
publicBaseUserControl()
{
popup=newPopup();
grid=newGrid();
popup.Child=grid;
}
protectedvirtualvoidOnClickOutside(){}
#region公共方法
publicvoidShow()
{
UpdateSize();
grid.Children.Add(this);
popup.IsOpen=true;
}
publicvoidShowAsModal()
{
canvas=newCanvas();
UpdateSize();
canvas.Background=newSolidColorBrush(Colors.Black);
canvas.Opacity=0.2;
canvas.MouseLeftButtonDown+=(sender,args)=>{OnClickOutside();};
grid.Children.Add(canvas);
grid.Children.Add(this);
popup.IsOpen=true;
}
publicvoidClose()
{
if(popup!=null)
{
popup.IsOpen=false;
//popup=null;
//grid=null;
//canvas=null;
}
}
#endregion
#region私有方法
privatevoidUpdateSize()
{
grid.Width=Application.Current.Host.Content.ActualWidth;
grid.Height=Application.Current.Host.Content.ActualHeight;
if(canvas!=null)
{
canvas.Width=grid.Width;
canvas.Height=grid.Height;
}
}
#endregion
}
}
Tags:SilverLight 扩展 UserControl
编辑录入:爽爽 [复制链接] [打 印]- ››silverlight全屏显示图片
- ››Silverlight MVVM 模式(一) 切近实战
- ››Silverlight for Windows Phone 7开发系列(1):...
- ››Silverlight for Windows Phone 7开发系列(2):...
- ››Silverlight for Windows Phone 7开发系列(3):...
- ››Silverlight for Windows Phone 7开发系列(4):...
- ››扩展Axis2框架,支持基于JVM的脚本语言
- ››扩展WebSphere Portal V6个性化功能
- ››扩展JavaScript的时候,千万要保留其原来的所有功...
- ››扩展数据:如何为 Model 750 服务器选择 I/O 扩展...
- ››扩展 JDT 实现自动代码注释与格式化
- ››扩展 secldap 的功能以验证多个数据源
赞助商链接