难得写篇和工作有关的东西,随着WinCE6.0 R3(请看马宁老师为我们第一时间带来的Windows Embedded 6.0 R3开发初体验)的发布,咱这一直想说不敢说的嵌入式UI框架终于可以随便乱讲了。作为一个早期用户,此处我来贡献点基础知识,发个FAQ来让大家有个印象:
Q1:Silverlight for Embedded是什么?
A1:Silverlight for Embedded是一个在WinCE6.0 R3以上版本上可用的应用程序UI框架,它提供了一种逻辑和UI相分离的编程模型,可以大大减轻程序员的UI开发工作量,同时跟Silverlight/WPF类似的Xaml语法也让程序员/视觉设计师在不同的领域之间有更多的知识交集,降低了学习成本。与Win32的GDI相比,Silverlight for Embedded更容易制作高质量的应用程序界面,也更容易修改和支持多种皮肤。
Q2:Silverlight for Embedded跟Silverlight有什么关系?
A2:Silverlight for Embedded跟Silverlight使用了同一个渲染核心,你可以认为Silverlight是用C#为它编写的一个shell,而Silverlight for Embedded则是用C++为它编写的另一个shell。Silverlight的目标是浏览器,而Silverlight for Embedded的目标是嵌入式应用程序(不久也许WinCE浏览器也会支持Silverlight插件)。
Q3:Silverlight for Embedded的文档在哪里可以找到?
A3:很遗憾Silverlight for Embedded目前文档还没有完成,但是Silverlight for Embedded跟Silverlight有非常相似的架构,你可以把MSDN上的Silverlight文档当作参考,所有的不同仅仅是C++和C#的语言差异(事实上我们在过去一年的开发中一直是这样做的),你也可以从微软的技术支持部门或JDP项目获得技术信息。
Q4:Silverlight for Embedded需要用什么环境来开发呢?
A4:不必说首先我们需要一整套WinCE6.0 R3的运行环境,注意Silverlight for Embedded只能使用非托管C++来开发,我们需要对自己的项目做一些设置来引用Silverlight for Embedded(这个比较复杂,细节以后单独发blog吧),此外Expression Blend可以帮助我们产生描述UI用的Xaml.
Q5:WinCE6.0 R3中有Silverlight for Embedded的应用吗?
A5:请看我们新版的Browser,此外随着WinCE6.0 R3还发布了一些小的示例程序。
Q6:相比Silverlight ,Silverlight for Embedded有哪些重大变动?
A6:除了语言从C#变成了C++,还有两点比较大的改动:
1.无法继承除UserControl的任何控件,即微软之外的程序员无法编写原生Control(Silverlight是可以的),但仍然可以用UserControl来组织你的界面
2.直接写在Xaml中的事件回调函数将会被忽略,需要在C++代码中查找元素名并且用C++代码绑定事件
感兴趣的朋友可以写下你的问题,我会尽量解答^^