WEB开发网
开发学院图形图像Flash Silverlight的弹出窗口--设计 阅读

Silverlight的弹出窗口--设计

 2009-02-25 11:56:37 来源:WEB开发网   
核心提示: 为了保证PopupService的伪单例的特性,必须将生成的对象保存起来,Silverlight的弹出窗口--设计(3),这里简单地用到了Dictionary进行保存,当调用GetServiceFor方法时,起到解耦的作用,尽可能地减少PopupService的负担,首先在缓存池中寻找,如

为了保证PopupService的伪单例的特性,必须将生成的对象保存起来,这里简单地用到了Dictionary进行保存,当调用GetServiceFor方法时,首先在缓存池中寻找,如果找不到则调用new进行实例化,随后放入缓存池中进行持久的保存,以保证日后不会再发生重新构造的问题,其具体代码如下:

public static PopupService GetServiceFor(Panel owner)
{
  if (!Cache.ContainsKey(owner))
  {
    PopupService service = new PopupService(owner);
    Cache[owner] = service;
  }
  return Cache[owner];
}

在这里并没有显式地对Cache对象(Dictionary<Panel, PopupService>类型)进行线程锁,这是因为Silverlight与Winform类似,所有对UI的操作只能在主线程进行,因此我认为没有必要在一个单线程执行的环境中进行加锁。

上面讲了PopupService的产生过程,下面例举一下PopupService提供的方法,由于方法十分简单,就不展开讨论,其方法主要有3个:

1. GetBoxPage:获取在此PopupService管理下的BoxPage的一个对象,有重载

2. GetMessagePage:获取在此PopupService管理下的MessagePage的一个对象,有重载

3. RegisterPopupBox:对已经创建好的但没有纳入PopupService管理的PopupBox对象进行注册,注册后的对象将由此PopupService进行管理,即分配一个LayoutMask

LayoutMask

LayoutMask听起来就叫“遮罩层”,但其实他不是一个控件,其地位类似于PopupService,是一个“管理者”的角色,他将管理多个PopupBox,从而将弹出窗口于PopupService分享开来,起到解耦的作用,尽可能地减少PopupService的负担,从而使程序结构更加清晰。

上一页  1 2 3 4 5 6  下一页

Tags:Silverlight 窗口 设计

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