wodehuajianrui
博客园
首页
新随笔
联系
订阅
管理
34 Posts :: 5 Stories :: 132 Comments :: 2 Trackbacks
公告
昵称:
花间蕊
园龄:
3年7个月
粉丝:
5
关注:
2
搜索
常用链接
我的随笔
我的评论
我的参与
最新评论
我的标签
最新随笔
1. C语言下的并归融合接口
2. C++语法补遗
3. 以O(logN)时间复杂度计算2的N次方的算法
4. 继承与扩展方法的比较
5. My Silverlight系列(13)—— Silverlight Windows
6. My Silverlight系列(12)—— 发布一个通用控件Menu
7. .net的GC及对象终结器
8. MS会让程序员变成SB吗
9. int, float, double之间不得不说的故事
10. My Silverlight系列(11)—— Silverlight中的右键事件点击模拟(全局版本)
我的标签
silverlight
(11)
编程基础
(3)
算法
(2)
C++
(2)
指针
(1)
InkCanvas
(1)
RightClick
(1)
C#
(1)
Microsoft
(1)
GC
(1)
更多
随笔档案
(34)
2009年8月 (2)
2009年6月 (2)
2009年4月 (1)
2009年3月 (1)
2009年2月 (1)
2008年12月 (1)
2008年11月 (2)
2008年10月 (2)
2008年9月 (5)
2008年8月 (4)
2008年7月 (13)
文章分类
(2)
Android
Buaa
C#.net
HTML&CSS
J2ME
SilverLight(2)
文章档案
(5)
2009年9月 (1)
2009年8月 (2)
2008年7月 (2)
My Links
My LifeBlog
积分与排名
积分 - 37727
排名 - 2841
最新评论
阅读排行榜
评论排行榜
推荐排行榜
2009年8月8日
#
My Silverlight系列(13)—— Silverlight Windows
众所周知,在微软的Windows平台,我们有许许多多的桌面应用,这让我们的生活变得丰富多彩而且有趣。在BS结构应用和RIA应用大行其道的今天,有很多桌面版应用推出了ajax版本和flex版本,免安装的同时也让升级和维护变得更加容易了。
Silverlight作为RIA的一种,它的优势体现在丰富的交互性上。如果说桌面版应用的载体是Windows Explorer的话,那么Silverlight应用的载体就是Internet Explorer(用FF的同学不要骂我,我还是喜欢IE的,因为它对SL的支持更好一些)。过去的一段时间,我通过补充和修改一些SL2时代写的代码,把Explorer这个概念搬到了Silverlight上,以求摸拟WPF上Window这个类的特性。由于本人的美术功底不好没有艺术细胞,而且也不怎么会用Blend,所以做出来的UI实在是有点不太好看。不过至少基本的功能都实现得差不多了,在这里我简要地介绍一下。
对于这个项目,主要的功能几乎全部由Explorer和Form这两个Control实现,前者可以定制WallPaper, Desktop Shortcuts, TaskBar等等,并且对所有的Form对象进行统一管理;后者主要用以支持最大化、还原、最小化,拖拽,改变窗口大小和窗口位置等逻辑功能。运行时的效果大约如图所示(这个是我自己的山寨版MSN):
Explorer类与Form类的使用也相对简单,Explorer只需要写在Xaml里面,一般使其成为Application.Current.RootVisual的根元素,使其能够充满整个Silverlight应用即可。Form类大约可以像Silverlight3中推出的ChildWindow一样使用,只不过在Show之前需要设置它的Explorer属性,不然的话会出现空指针。
在这个基础上实现一个自己的Form很简单,由于Form本身是一个ContentControl,那么在Xaml中可以这样定义:
<
provider:Form
x:Class
="SilverlightWindow.HelloWorld"
xmlns
="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:provider
="clr-namespace:WinFormProvider.Controls;assembly=WinFormProvider"
Width
="600"
Height
="400"
Icon
="icon.jpg"
Title
="Hello World"
Top
="100"
Left
="100"
ShowInTaskBar
="True"
MinWidth
="500"
MinHeight
="300"
>
<
provider:Form.TrayAreaIcon
>
<
provider:TrayAreaIcon
Icon
="icon.jpg"
DoubleClick
="TrayAreaIcon_DoubleClick"
/>
</
provider:Form.TrayAreaIcon
>
<
Grid
x:Name
="LayoutRoot"
Background
="White"
>
<
TextBlock
>
Hello, there is a form, it will show with 100px XOffset and 100px YOffset
<
LineBreak
/>
You can resize it, and drag it, or close it
<
LineBreak
/>
I don't konw how to create an introduction documentation
<
LineBreak
/>
However, I think this control is quite easy, you can do it as WPF window
<
LineBreak
/>
<
LineBreak
/>
<
LineBreak
/>
And don't be surprised if the footer disappers from taskbar when you minimize the form
<
LineBreak
/>
it is because I think if there is a trayarea icon, footer is useless
</
TextBlock
>
</
Grid
>
</
provider:Form
>
而且后台的代码中,由于开放了比较丰富的public、protected属性、方法以及事件,因此我们可以实现很多功能,具体您可以参考代码以及示例。
这个项目(包括示例)我已经将它发布到了codeplex上面:
http://silverlightwindow.codeplex.com/
,是一个Alpha版本。如果哪位有兴趣的话,可以联系我,大家一起把它完善了。
我仔细阅读了有关把文章放到首页的要求,感觉我这篇随笔像是属于4) 软件发布的文章,但是我希望能有更多的人看到这篇文章,如果您喜欢silverlight,觉得这个项目有价值的话,欢迎加入我,大家一起丰富和完善这个项目。
最后再小小庆祝一下本人在silverlight官网(
http://silverlight.net/forums
)的积分达到2000,成功晋级contributor。截图留念:
posted @ 2009-08-08 16:08 花间蕊 阅读(1825) 评论(23)
编辑
Powered by:
博客园
Copyright © 花间蕊