A Native of Silverlight with Full Hardware Access
Silverlight Embedded is specifically designed for embedded devices that do not necessarily have network connectivity, or if they do the connection is sporadic. XAML was chosen for the UI layer so that the same partial separation between designers and developers enjoyed by .NET and web developers could be employed for embedded systems. But the limitations of hardware meant that a native programming language is more appropriate.
It is important to note that this isn’t Windows 8/WinRT. Silverlight Embedded has full access to the Win32 API and underlying hardware exposed by the operating system. All of your legacy Windows Embedded libraries should continue to work under Silverlight.
That said, there are some similarities. For example, Hardware accelerated graphics are offered via DirectDraw or OpenGL, but they are not required. Data binding is supported in Silverlight Embedded using normal XAML binding expressions. On the code-side, the models need to implement the IXRPropertyBag interface instead of INotifyPropertyChanged. For other differences, see this comparison between Silverlight 3 and Silverlight Embedded.
The first version of Silverlight for Embedded was released for Windows Embedded CE 6 Release 3. This version had an API based on Silverlight 2. The next version was for Windows Embedded Compact 7, which uses the Silverlight 3 API. The tooling for the first version was rather crude, but with Microsoft is claiming this version is much more mature. The tools needed to get started are
- Visual Studio 2008
- Expression Blend 3
- Silverlight for Embedded SDK
- Platform Builder 7
The platform builder is especially import: this is the tool that creates the skeleton of a C++ project from Expression Blend’s Silverlight/XAML project. Controls that will be accessed need to be named and event-handlers registered before running the tool. Fields and callbacks that represent these will be automatically generated in the resulting C++ header and code files. As the XAML is changed, the tool is reapplied to update the generated code.
Other concepts such as animation are available in Silverlight Embedded. Storyboards are created in Expression Blend just as if you were building a Silverlight for web or Silverlight for Windows Phone application. Of course care must be taken to avoid using animations that are too complex for the target hardware. A demo of this can been seen in the video Creating and Using Silverlight for Embedded Applications.
I think C++ is worth another look now.