難得寫篇和工作有關的東西,隨著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++代碼綁定事件
感興趣的朋友可以寫下你的問題,我會盡量解答^^