What's New in Surface 2.0

This topic lists new features and differences between Microsoft Surface 2.0 and previous releases.

This topic contains the following sections:

API Changes

Some API types and members have been renamed, moved, or deleted. For a complete list, see API Changes in Surface 2.0.

Application Migration Tool

You can use the Surface Migration Powertoy to help convert Surface 1.0 SP1 projects to Surface 2.0. For more information, and to download the tool, see Surface Migration Powertoy.

Application Registration

The schema of the application-registration XML file has changed due to the new generic tag format. Additionally, application previews are no longer supported. For more information, see Registering Standard Applications.

In Surface 1.0 SP1, you registered an application on a device made for Surface by copying the application-registration XML file to the %PROGRAMDATA%\Microsoft\Surface\Programs folder. The executable was not stored in the same folder as the application-registration XML file. Now, in Surface 2.0, the executable file and the application-registration XML file are stored in the same folder by default, and to install the application, you copy only a shortcut to the application-registration XML file to the %PROGRAMDATA%\Microsoft\Surface\v2.0\Programs folder.

Developers testing their applications on a device made for Surface can quickly make their applications show up in Launcher by creating a shortcut to the executable file (instead of to an application registration XML file), and copying that shortcut to the %PROGRAMDATA%\Microsoft\Surface\v2.0\Programs folder. The application will appear with a default icon image in Launcher.

ElementMenu Control

The visual and interaction design of the ElementMenu control has been fine-tuned and uses new icons. The icons are provided as resources in the Controls Box sample. You can use any of the icons in other areas of your application. For more information, see ElementMenu Control.


The syntax for responding to "tap" and "press-and-hold" gestures has changed. In Surface 1.0 SP1, the events were part of the base SurfaceControl class. Now, you can use the attached events of the TouchExtensions class. For an example, see the AddHoldGestureHandler method.

If you use the Surface Migration PowerToy, your gesture code will not be updated. There is more information about how to update your gesture code in the documentation that comes with the PowerToy.

Hardware Capabilities

You can use the Surface SDK to develop applications that will run on devices made for Surface and Windows Touch computers. Devices made for Surface are produced by third-party manufacturers. Individual devices and displays might differ in the following hardware capabilities:

  • The display size and resolution.

  • The maximum number of simultaneous touch points.

  • The detection of the orientation of a touch point.

  • The reporting of touch bounds or touch geometry.

  • The detection of finger touch input (as well as blob touch input).

  • The detection of tagged objects.

  • The detection of the tilt of the interactive device.

  • The working area and the bounds of the interactive surface.

You can use the members of the Presentation layer InteractiveSurfaceDevice class and the Core layer InteractiveSurfaceDevice class to determine hardware capabilities.

XNA HiDef Profile

Applications created with the Surface Application (XNA Game Studio 4.0) project template in Visual Studio specify the HiDef graphics profile by default.

If you want to run your XNA-based application on hardware that does not support the HiDef profile (such as computers without DirectX 10-capable graphics cards), right-click your project in Visual Studio, click Properties, and then, on the XNA Game Studio tab, change the Game profile setting to Use Reach to access a limited API set supported by Windows Phone, Xbox 360, and Windows. For more information about XNA 4.0 graphics profiles and comparison of supported features, see What Is a Profile.

The RawImage Visualizer sample in the Surface SDK requires the XNA high-definition graphics profile and therefore runs only on systems with DirectX 10-capable graphics cards.

LibraryContainer Control

If you override the MinWidth and MinHeight properties of a LibraryContainer control in stack view mode and set them to a value smaller than the default minimum width and height, group labels will not appear in stack view mode.

Manipulations and Inertia

There is no manipulation processor (Affine2DManipulationProcessor) in the Core layer or Presentation layer anymore. Manipulation functionality is included in WPF 4.0 and XNA 4.0. To use manipulations and inertia, use the classes of the System.Windows.Input.Manipulation namespace instead.

If you use the Surface Migration PowerToy, your manipulation and inertia code will not be updated. There is more information about how to update your manipulation and inertia code in the documentation that comes with the PowerToy.

Rich Input

Surface software architecture now uses HID-based input. Input on a Windows Touch computer is routed through the same path as input on device made for Surface. The following new and redesigned input drivers provide touch and image data from OEM hardware to the Surface system:

  • Surface VIP driver.

  • Input Simulation driver.

  • Image data channel.


New and updated WPF and XNA samples demonstrate key development concepts. A batch file is included to install and register the samples on a device made for Surface. On a Windows Touch computer, you can run the samples from Visual Studio. For more information, see Extracting and Installing the Surface Samples.

Surface Controls

The Surface WPF controls now support local and inherited mouse, touch, and stylus events and methods.

Additionally, the Surface WPF controls have been restyled to provide a more simplified design that emphasizes content and ease of use. There are four color schemes that can be chosen by the administrator. If you use the default templates of Surface WPF controls, or if you bind XAML properties to the Surface color resources, the appearance of your application will automatically change to match the color scheme chosen by the administrator. For more information, see Surface Colors and Palettes.

Surface Installers

The following installers are available for the Surface 2.0 platform:

  • Hardware Installer   The hardware installer comes preinstalled on hardware made for Surface 2.0. It contains the drivers necessary for rich multi-touch input, the Surface reference assemblies, and Windows integration components (Surface Mode and Windows Mode support). The Surface Shell is installed by the hardware installer. To test your application integration with the Surface Shell, you have to run it on hardware made for Surface 2.0.

  • SDK Installer   The SDK installer includes all the components you need to develop a Surface application, including reference assemblies, Visual Studio integration components (design time components and templates), samples, and tools like the new Input Simulator, Input Visualizer, and Surface Stress. The SDK installer does not include the Surface Shell.

  • Runtime Installer   The runtime installer contains Surface reference assemblies. The runtime installer provides redistributable rights. You must redistribute the runtime with your application if it will be installed and run on non-Surface hardware.

Surface System

Improvements to the Microsoft.Surface APIs enable application integration with the Surface platform, providing access to system events, language settings, notifications, and keyboard events.

Applications can reference the Surface system assembly on either devices made for Surface or Windows Touch computers. Applications use Windows 7 environment equivalents when the Surface environment (in other words, Surface Shell running on a device made for Surface) is not present.

Tags and Object Routing

The concepts of "identity" and "byte" tags have been retired in Surface 2.0. Tag APIs have been redesigned to be generic. For more information, see Tagged Objects and Tag Visualizations.

The Application Registration XML schema has been updated to use the concept of a more generic tag. For more information, see Registering Tags for an Application.

The physical attributes of object tags are now defined in an Object Set XML file instead of in a registry key. For more information, see Specifying Physical Attributes of Tagged Objects.

If you use the Surface Migration PowerToy, your tag-related code and registration data will not be updated. There is more information about how to update your tag code and registration data in the documentation that comes with the PowerToy.


The Input Simulator tool has been improved to simulate all types of touch input, including the orientation of touch points, and the tilt of the interactive device. Additionally, the Surface Stress tool now requires Administrator privileges. For more information, see Surface Tools.

Touch Support

WPF 4.0 controls now support touch input as well as stylus and mouse input. Because the Surface controls inherit from WPF controls, the WPF touch input functionality is now inherited.

The touch-related APIs of the Core layer were renamed to be more similar to the WPF touch APIs.

If you use the Surface Migration PowerToy, most of your code will be updated automatically.

User Controls

The SurfaceUserControl class has been removed in Surface 2.0. The SurfaceUserControl class was needed in Surface 1.0 SP1 to add touch support to user controls. However, touch support has been added to the UserControl class in .NET Framework 4. To convert your code, remove "s:Surface" from the front of "s:SurfaceUserControl", or use the Surface Migration PowerToy.

Visual Studio Integration

You can use Microsoft Visual Studio 2010 (Express or full edition) to create Surface 2.0 applications. The Surface SDK installs a WPF project template for creating Presentation layer applications, and an XNA project template for creating Core layer applications that use XNA. Both templates use C#. The project templates generate the code necessary to interact with Surface Shell on a device made for Surface. Additionally, Surface controls are available in the Visual Studio Toolbox when you are working in a Presentation layer project. For more information, see Developer Experience.

Did you find this information useful? Please send us your suggestions and comments.

© Microsoft Corporation. All rights reserved.