Welcome

首页 / 软件开发 / Silverlight / Silverlight的弹出窗口--展示

Silverlight的弹出窗口--展示2011-09-17 博客园 Gray Zhang背景

年后来到公司实习,第一个星期没有项目,也就无所事是,此时有一位前辈和我说,他们有一个系统 是基于Silverlight研发的,而其中使用的弹出窗口存在着不少的问题,因此如果可以的话,要我做出一 个弹出窗口的功能,其子元素可以是自定义的任何控件。

我很高兴进入公司才几天就能有这样的任务,每一次我去不同的公司实习,总是能在很短的时间内被 “委以重任(当然更多的是我自己在自恋)”去进行可利用的基础设施的研发,非常感谢从大二开始都一 直如此信任和看得我的各家公司,我想只有在这样的环境中才可以全力以赴……

总之接下此任务的情况是这样的,那么至此我对Silverlight到底有多少的知识呢?答案是,零。认识 我的人都知道,我是非常非常没有美工水平的,因此对于几乎所有前台开发的技术都敬而远之,而其中如 此新颖的Silverlight更是令我望而生怯。

但是事已如此,刚进公司也不能说我不会做,于是就硬着头皮上了,最终的结果是这样的:

首先用半天的时间基本撑握了Silverlight的模型,包括了解了Xaml的语法如DependencyProperty, AttachedProeprty等,基本熟悉了相关的API,至于控件树之类的理念,Winform和Webform也是基本相同 的模型,因此熟悉起来也相对较快

随后用半天的时间,折腾出了一个弹出窗口的原型,看起来确实相当地舒服,弹出一个窗口再关闭, 弹出两个窗口再相继关闭,并没有出现特别大的问题

然后,5分钟的时间内,发现这东西并不完美,存在着不少的问题,于是从架构上完全推倒了前一次的 作品,很明显我的实现是基于一个错误的设计,也因此需要将整个模型进行重新的设计并进行再一次的实 现

经过再半天的努力,终于有了一个较为理想化的设计,并完成了这个版本的实现

我们的选择

对于弹出窗口这样的功能,我们在Silverlight中是有多种选择的,在介绍我的作品之前,我们先来看 一下各种选择的优点和缺点

选择1:MessageBox

确实Silverlight中是有一个MesasgeBox的,和Winform中的一样,调用MessageBox.Show即可,但其也 存在着不少问题,当然在这之前我们要先向好的一方面看

优点:MessageBox是同步的,即Show方法调用后可以直接取得返回值,同步编程在简单性上相比异步 编程有着非常大的优势,因此确实可以作为一个好的选择

缺点:知道为什么各JS框架都要出个MessageBox么,就是因为alert这东西实在太难看了,而现在我们 面对着更为绚丽的Silverlight应用,在赏心悦目地享受着的同时,难道要时不时看到一个和alert窗口一 模一样的家伙弹出又消失?

选择2:Popup

Popup是Silverlight基础类库提供的一个控件,可以直接完成弹出的功能

优点:操作简单,可以用Xaml表述,封装了弹出的功能,样式可自定义,作为官方的解决方案甚为强 大

缺点:据前辈说,Popup中包含有DataGrid之类的复杂控件的时候,会有Bug出现,这也是需要我去完 全做一个弹出窗口出来的主要原因……