基于Silverlight/XAML开发嵌入式系统WinCE下应用程序UI By Toradex 秦海
1. 简介 XAML (eXtensible Application Markup Language) – 可扩展应用程序语言,在桌面平台广泛应用于WPF和Silverlight应用程序UI设计开发,而针对嵌入式系统,Microsoft基于桌面平台Silverlight定义了Silverlight/XAML for Windows Embedded, 提供针对Windows Embedded Compact 的应用程序UI开发框架, 以方便客户在嵌入式设备上开发出更炫丽和易于交互的应用程序界面。
Silverlight/XAML for Embedded从Wince 6.0 R3开始支持,在这之应用程序UI开发主要是Win32或者MFC(Microsoft Foundation Class);Win32 虽然效率高,但开发相对比较复杂,且很难实现复杂界面设计;MFC是基于Win32 API和C++的面向对象类库,同时包含应用开发框架,在.NET之前被广泛应用,目前桌面平台主流已是基于.NET的WPF/Silverlight框架;而在嵌入式平台,由于.NET CF环境资源占用比较大,因此还是基于C++的框架为主流,因此对于架构简单界面小巧的MFC还是占据一席之地;但随着技术发展,MFC的缺点也越来越明显,如无法应对复杂界面,开发仍然相对困难等;而相对的,Silverlight/XAML for Embedded可以说是更先进的UI开发框架,其优势是可以开发复杂交互界面,程序UI和逻辑开发分离模型,与主流桌面环境采用类似的XAML语法,支持嵌入式处理器硬件图形加速等。
2. Silverlight/XAML for Embedded 和桌面平台Silverlight的主要区别
Silverlight |
|
WinCE嵌入式系统应用程序UI开发 |
桌面平台交互式Web前端应用开发 |
只支持Virtual C++ |
支持Virtual C#,.NET Framework等 |
基于Win32窗口,不依赖浏览器 |
基于浏览器插件 |
部分event/namespace等的差异 |
详细差异对照可以参考这里 |
3. 这里是一个基于Toradex Tegra ARM平台下Silverlight/XAML for Embedded 的开发实例,利用Expression Blend 创建Silverlight 应用导入到VS2008后下载到目标平台 (注目前Microsoft已经停止对Expression Blend的延续并将其整合到VS2013 Update 4中) a. 开发环境准备,顺序安装下面项目 ./ 安装 Virtual Studio 2008, 可以从这里下载试用版 ./ 安装 VS2008 SP1, 可以这里下载 ./ 安装 Microsoft Expression Blend 3, 可以从这里下载试用版 ./ 安装 Windows Embedded Silverlight Tools, 可以从这里下载 ./ 安装目标板Toradex Tegra 平台WEC7 SDK, 可以从这里下载 b. 用 Microsoft Expression Blend 3 创建Silverlight 应用 ./ 创建 New Project –》 Windows Embedded Application
./ 建一个”Button”,显示“print Message”,并命名为”PrintMessage”, 然后Properties -> Events, 设置Click 为 PrintMessage
./ 建立一个“TextBox”, 并命名为”MessageSpace”, 最后保存全部。
c. 在VS2008导入上面创建的应用,并在目标板部署 ./ 在VS2008创建New Project ->Virsual C++ ->Smart Device ->Silverlight for Windows Embedded Application,并按提示一步步导入上面建立的项目
./ 编辑”MainPage.cpp”
./ Build -> Deploy 应用,需要目标板OS image包含Silverlight组件,如果用的标准版,可以这里下载在目标板上面安装后再部署运行示例程序
./另外,还可以从这里看到更多基于Silverlight/XAML for Embedded的开发实例
4. 总结 由于Microsoft 针对Embedded Compact OS没有提供WPF支持,因此Silverlight/XAML for Embedded 就是比较熟悉Windows平台开发的用户在嵌入式平台比较好的进行应用程序UI的一个选择,开发难度和界面效果能够让人满意,同时又不像桌面平台依赖于浏览器,稳定和可靠性方面有保证;而不足方面是不具备跨系统平台的兼容性,如果应用需要运行在多平台,那么Qt可能是更好的选择。