WEB开发网
开发学院图形图像Flash [SilverLight]扩展UserControl实现弹出效果 阅读

[SilverLight]扩展UserControl实现弹出效果

 2008-12-24 11:54:19 来源:WEB开发网   
核心提示:感觉SilverLight的编程方式更像WinForm一点,要是有WinForm中的Show方法和ShowDialog方法就可以更灵活的操作窗口了,[SilverLight]扩展UserControl实现弹出效果,这次我们就来给SilverLight的UserControl增加这两个方法:分别是Show() and S

感觉SilverLight的编程方式更像WinForm一点,要是有WinForm中的Show方法和ShowDialog方法就可以更灵活的操作窗口了,这次我们就来给SilverLight的UserControl增加这两个方法:分别是Show() and ShowAsModal()。

基本原理是写个UserControl的基类BaseUserControl,在基类中实现这两个方法,需要弹出的UserControl继承这个基类就可以了,具体这两个方法的实现方式是利用SilverLight的PopUp对象。

[SilverLight]扩展UserControl实现弹出效果

如下代码就是我抄来并修改的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
  }
}

1 2  下一页

Tags:SilverLight 扩展 UserControl

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接