Silverlight Feature Introduction History Listed by Version
Microsoft Silverlight will reach end of support after October 2021. Learn more.
Silverlight has released several versions of the core runtime, the Silverlight SDK and the related set of tools for Silverlight development using Visual Studio. This topic provides a history of features that were introduced to specific versions.
This topic contains the following sections.
- Current Version
- Features Introduced by Silverlight 4
- Related Topics
Current Version
The current version of Silverlight as documented in this documentation set is Silverlight 5. For more information on the features that are introduced in Silverlight 5, see What's New in Silverlight 5.
Features Introduced by Silverlight 4
This section describes some of the features and improvements that were introduced in Silverlight 4. For more information, see New Silverlight 4 Features.
Windows Phone Platform Support
Silverlight is supported on Windows Phone 7. The RTM release of Windows Phone 7 was after the release of Silverlight 4, but documentation was updated in the Silverlight 4 documentation set to include more information about Silverlight for Windows Phone 7. For additional information, see Silverlight for Windows Phone and Windows Phone Development.
Controls and UI Classes
The following is a list of the controls that were introduced to the Silverlight core runtime or client SDK assemblies in Silverlight 4.
RichTextBox enables you to display, enter, and edit rich text. You can apply character or paragraph formatting to the text, display hyperlinks, and add inline images.
Viewbox is a content decorator that takes one child element and stretches it or scales it to fit the size of the Viewbox.
WebBrowser provides a surface for displaying HTML content when the application runs outside the browser.
WebBrowserBrush displays HTML content from a WebBrowser control. For example, you can use a WebBrowserBrush to paint the Fill of a shape such as a Rectangle or the geometry contents of a Path.
Drag-and-drop support: You can select a file list from applications outside of the Silverlight content area, and drag the selected file list into the Silverlight content area. This is enabled by UIElement APIs such as Drop, and support classes.
Right-click:MouseRightButtonDown and MouseRightButtonUp events are introduced to the base UIElement class.
Clipboard object access: See Clipboard.
Commanding:ButtonBase and Hyperlink support Command and CommandParameter properties, which typically bind to a view-model data source. For more information, see ButtonBase.Command or Hyperlink.Command.
Right-to-left text flow: See FlowDirection
In addition to the previous features, the following changes in DependencyObject, UIElement and FrameworkElement may be interesting for UI scenarios:
The FrameworkElement.Cursor property can be set with property system APIs.
FrameworkElement has an Unloaded event.
Text events for input method editors are supported at the UIElement level, so that you can take advantage of routing.
SetValue calls are more consistent with WPF equivalent behavior, particularly in cases of running animations.
Out-of-Browser Support Additions in Silverlight 4
Out-of-browser applications in Silverlight 4 support several features that are unavailable to browser-hosted applications, including the following:
Window features including run-time resizing, always on top capability, and a Closing event that you can cancel.
Support for offline digital rights management (DRM).
HTML hosting with the WebBrowser control.
Popup alerts with the NotificationWindow class.
Support for elevated trust and trusted applications. Trusted applications can bypass some of the restrictions of the Silverlight security sandbox and integrate with native functionality. Trusted applications can access Window APIs that enable complete customization of the out-of-browser application window. For more information, see Trusted Applications and System.IO.
Silverlight 4 supports late binding in various forms.
Visual Basic supports late binding by default for variables of type Object.
C# supports late binding for variables of type dynamic.
To support late binding to HTML DOM elements, the ScriptObject class implements the IDynamicMetaObjectProvider interface.
To support late binding to Automation APIs, the AutomationFactory class and related classes were added to the Silverlight framework.See How to: Use Automation in Trusted Applications.
Improved support for debugging out-of-browser applications.
For more information on out-of-browser support in general, see Out-of-Browser Support.
Multicast Clients
The System.Net.Sockets namespace in Silverlight 4 has additional support for UDP multicast clients. This allows network clients to take advantage of multicast applications that more efficiently use network resources. For more information, see Working with Multicast, System.Net.Sockets.UdpAnySourceMulticastClient or System.Net.Sockets.UdpSingleSourceMulticastClient.
Relaxed Security Policy for Trusted Applications
The System.Net.Sockets namespace includes support for relaxed security policy restrictions applied to out-of-browser trusted applications that communicate using System.Net.Sockets. For more information, see Network Security Access Restrictions in Silverlight and Trusted Applications.
Client HTTP Processing
There have been several feature additions when you opt in to client HTTP processing for your networking calls:
Referer header is sent on all requests
Basic and NTLM authentication support
Caching support
Ability to enable or disable stream buffering for read and write requests
Concurrent connection limit is raised from 2 to 6
For more information about opting in to client HTTP processing, see How to: Specify Browser or Client HTTP Handling
XAML
Silverlight 4 includes a XAML parser as part of the Silverlight runtime that is different from the Silverlight 3 parser The two parsers exist side-by-side.For more information about the differences in XAML behavior between Silverlight 3 and Silverlight 4 XAML parsing, see XAML Processing Differences Between Silverlight Versions.
Data Binding
Silverlight data binding in Silverlight 4 supports the following features:
Binding to DependencyObject instances.
Binding to String indexers.
Ability to specify String formatting options through the StringFormat property.
Ability to specify default display values through the FallbackValue and TargetNullValue properties.
Ability to group collection items through the GroupDescriptions property of the CollectionViewSource class.
Support for the ICollectionViewFactory interface, which enables custom data-entity collections to provide custom ICollectionView implementations to the CollectionViewSource and DataGrid classes.
Support for complex, multi-property validation of bound objects that implement the INotifyDataErrorInfo or IDataErrorInfo interface. This includes support for these interfaces by the binding engine and by user-interface controls such as DataGrid.
For more information, see Data Binding.
DataServiceCollection<T> provides simplified binding for data returned by WCF Data Services. This class inherits from the ObservableCollection<T> class to automatically update bound data when there are changes to data in bound controls. For more information, see How to: Bind Data Service Data to Controls (WCF Data Services/Silverlight).
WCF Data Services
The WCF Data Services client for Silverlight enables you to access data from any service that exposes an Open Data Protocol (OData) feed. The following functionality has been added to the WCF Data Services client in this release of Silverlight:
DataServiceCollection<T> provides simplified binding of data service data to Silverlight controls. This class inherits from the ObservableCollection<T> class to automatically update bound data when there are changes to data in bound controls. For more information, see How to: Bind Data Service Data to Controls (WCF Data Services/Silverlight).
The WCF Data Services client for Silverlight 4 supports both out-of-browser and cross-domain execution. For more information, see WCF Data Services (Silverlight).
The WCF Data Services client for Silverlight 4 supports explicitly supplying authentication credentials when requesting data from an OData-based service. For more information, see how to: How to: Specify Client Credentials for a Data Service Request (WCF Data Services/Silverlight).
The following Open Data Protocol (OData) functionality is supported by the WCF Data Services client in Silverlight 4:
An OData service can return only the total number of resources represented by a URI or include this row count information together with the resource data in a single response. The WCF Data Services client for Silverlight 4 can access this row count information in a query response in your application. For more information, see Querying the Data Service (WCF Data Services).
A data service can be configured to return requested resources as a set of paged responses. The WCF Data Services client for Silverlight has been updated to enable you to handle such paged responses. For more information, see Loading Deferred Content (WCF Data Services).
Query results returned by an OData service can be projected into arbitrarily defined types. The WCF Data Services client for Silverlight 4 can support projection by using the select clause (Select in Visual Basic) in a LINQ query. For more information, see Query Projections (WCF Data Services).
The WCF Data Services client for Silverlight 4 can get and set binary properties as a stream from an OData service that supports media resources. For more information, see Loading Deferred Content (WCF Data Services).
WCF RIA Services
WCF RIA Services simplifies the development of n-tier solutions for Rich Internet Applications (RIA), such as Silverlight applications. A common problem when developing an n-tier RIA solution is coordinating application logic between the middle tier and the presentation tier. RIA Services solves this problem by providing framework components, tools, and services that make the application logic on the server available to the RIA client without having to manually duplicate that programming logic. RIA Services works with Silverlight 4 but is available as a separate installation. For more information, see WCF RIA Services.
Dynamic Language Runtime
The dynamic language runtime (DLR) is a runtime environment that adds a set of services for dynamic languages to the CLR. To support the DLR, the System.Dynamic namespace was added to the .NET Framework for Silverlight 4 and the expression trees were extended with types that represent control flow, for example, LoopExpression and TryExpression.
For more information, see Dynamic Language Runtime Overview.
Collection Classes
ISet<T> provides for the abstraction of sets. Sets are collections that have unique elements and specific operations. ISet<T> is implemented by the HashSet<T> class that is available for Silverlight 4.
Tuples
Silverlight 4 provides the Tuple class for creating tuple objects that contain structured data. It also provides generic tuple classes that have from one to seven type parameters for representing singletons, pairs, triples, quadruples, and so on. To support tuple objects that have nine or more components, there is a generic tuple class with seven type parameters and an eighth parameter of any tuple type.
Parsing and Formatting Time Intervals
To support culture-sensitive formatting, the TimeSpan structure in Silverlight 4 implements the IFormattable interface and includes overloads of the ToString, Parse, TryParse, ParseExact, and TryParsExact method. Its formatting and parsing methods also support both standard and custom format strings.
Other Core Features
The following list describes capabilities and improvements added to Silverlight 4.
String.IsNullOrWhiteSpace indicates whether a string is null, empty, or consists only of white-space characters. Overloads were added to the String.Concat and String.Join methods that concatenate members of System.Collections.Generic.IEnumerable<T> collections.
The String.Concat method lets you concatenate each element in an enumerable collection without first converting the elements to strings.
The StringBuilder.Clear method makes it easier to clear a StringBuilder instance.
The Enum.HasFlag method determines whether one or more bit fields or flags are set in an enumeration value. The Enum.TryParse method returns a Boolean value that indicates whether a string or integer value could be successfully parsed.
Trusted applications can use Path.Combine method overloads that enable you to combine file paths.
File enumeration methods can improve the performance of trusted applications that access directories or that iterate through the lines in large files. Only the directories and files under My Documents are accessible. For more information, see the Directory, DirectoryInfo, and File classes.
You can enable lazy initialization for any custom type by wrapping the type inside a System.Lazy<T> class.
Monitor.Enter(Object, Boolean%) method overload takes a Boolean reference and atomically sets it to true only if the monitor is successfully entered.
The System.Guid structure contains the TryParse and TryParseExact methods.
Silverlight Designer
In Visual Studio 2010, various designer improvements were made to help create Silverlight applications. In Visual Studio 2008, the designer support for Silverlight projects was limited. In Visual Studio 2010, you can complete tasks, such as selecting and positioning items with the mouse on the design surface, and setting properties with the Properties window. For more information, see Silverlight Designer for Visual Studio 2010.
Other Features
Implicit Styles
Silverlight 4 applications can set a Style implicitly. For more information, see Style or Creating a New Control by Creating a ControlTemplate.
Multiple Transforms
Silverlight 4 applications can use the CompositeTransform class to apply multiple transforms to the same object, such as skew and rotate. This class applies multiple transforms in a preferred order and is generally better suited for applying multiple transforms to an object instead of using the TransformGroup class.
Webcam and Microphone
Silverlight 4 supports capture of source input from the user's audio device or video device. The CaptureImageAsync method enables a simple screen capture scenario and the VideoBrush.SetSource method enables a simple video playback scenario. More advanced scenarios can access raw audio or video and process it into file formats. Webcam and microphone capture both use a sink metaphor for establishing a listener class, and obtaining a capture requires client user permission for capture device access. For more information, see CaptureSource, AudioSink, VideoSink, and Webcam and Device Overview.
DRM for Offline
There are a number of Silverlight 4 features integrated into Silverlight DRM that can be used to implement offline scenarios including purchase and download, rentals, and subscriptions. For more information, see Digital Rights Management (DRM).
Printing
Silverlight 4 applications can print the user interface by using the PrintDocument class. For more information, see Printing.
Full-Screen Support
Silverlight 4 enables applications to remain in full-screen mode when another application is active. For more information, see FullScreenOptions.
Navigation Extensibility
You can extend the Silverlight navigation in order to support arbitrary URI resolution. For example, you can implement navigation extensions for URI redirection, dynamic page generation, and on-demand download of pages from the server. The Frame and NavigationService classes also provide a Refresh method. This is useful when using navigation extensions that can deliver different content for the same URI depending on user interactions in a particular page. For example, this enables some navigation scenarios with pages that require user authentication. For more information, see Navigation Overview.