BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage News A Native of Silverlight with Full Hardware Access

A Native of Silverlight with Full Hardware Access

Bookmarks

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.

Rate this Article

Adoption
Style

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Community comments

  • Great!

    by Paulo Pinto,

    • Re: Great!

      by sulfide smolder,

      • Re: Great!

        by Faisal Waris,

      • Re: Great!

        by Paulo Pinto,

        • Great!

          by Paulo Pinto,

          Your message is awaiting moderation. Thank you for participating in the discussion.

          Nice to see C++ regaining first class status on Windows.

        • Re: Great!

          by sulfide smolder,

          Your message is awaiting moderation. Thank you for participating in the discussion.

          c++...vomit.

        • Re: Great!

          by Faisal Waris,

          Your message is awaiting moderation. Thank you for participating in the discussion.

          C++ '11 is a major overhaul of the language which adds (among many other features) functional aspects (lambdas) and new smart pointers (auto garbage collection).

          See: www.softwarequalityconnection.com/2011/06/the-b...

          I think C++ is worth another look now.

        • Re: Great!

          by Paulo Pinto,

          Your message is awaiting moderation. Thank you for participating in the discussion.

          Which other multi-paradigm language would you use instead, to target high performance native code?

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

BT