Charms and contracts
Charms and contracts are the glue that binds Windows Store apps together and to the system UI. Together they provide a consistent way of executing the most common tasks such as searching and sharing. Charms and contracts let different apps interact with each other in a predictable and familiar manner.
Charms and contracts epitomize the Microsoft design principle of win as one because they integrate disparate apps while providing a unified place to search, share, and adjust settings.
There are five charms, which users access by swiping from the right edge or pointing to the top or bottom right corners of the screen. In addition to providing an expected way of interacting with your app, the charms also let your app share data. You can pass images between different apps, email information directly from an app to an outside source, or even provide terms that show up in search queries invoked from within other apps.
The five charms are as follows.
This charm enables the user to search in the currently open app as well as across other apps, files, or the web.
This charm lets the user share content outside of the current application.
This charm takes the user to the Start screen.
This charm enables apps to print content or send to a Play To device.
This charm gives the user a reliable and consistent way of accessing app settings across the system.
In Windows 8.1, charms work together with contracts to support a variety of end-to-end scenarios. A contract is like an agreement between one or more apps. Contracts define the requirements that apps must meet to participate in a set of unique Windows interactions. For example, Windows lets users share content from one app to another by using a contract. The app that shares content out supports a source contract by meeting specific requirements, while the app that receives the shared content supports a target contract by meeting a different set of requirements. Neither app needs to know anything about the other. Every app that participates in the sharing contract can be confident that the sharing workflow is completely supported, end-to-end, by Windows.
Windows offers many contracts in addition to those invoked by the charms. For example, you can let your users pick files from their local PC, connected storage devices, or other apps. Your app can provide location-awareness. And you can ensure that your app works well with multimedia. Investigate the complete list of App contracts and extensions and this guide.
There are many scenarios for sharing content between apps. Users can find and share media content or even create and send a playlist to a friend simply by invoking the share charm. Users can also send content from a PC to networked devices like TVs and audio/video receivers to enable group viewing. You can add QuickLinks for your app, which are time-saving links that the Share pane displays. They are customized for the user and let the user instantly share content with frequently used contacts. For more information, see Quickstart: Receiving shared content.
In this example, Bing Travel has optimized efficiency on behalf of its users by using the Share charm to quickly and easily transfer a complete travel itinerary to a contact via email.
Sharing content from one app to another, as demonstrated by the Wired Epicenter app, can maximize productivity while preserving context. In this example, the user shares an article to Facebook without needing to navigate away from the current content.
Data sharing goes beyond the simple transfer of content from one app to another. The following example demonstrates how you can collect data from a music website, in this case Decibel’s Festival Lineup, and aggregate it into a playlist. The user doesn’t have to search for individual songs and then copy and paste the titles. Instead, the user simply taps the Share charm, selects Xbox Music - Create a playlist, and Windows does the rest.
- App contracts and extensions
- Guidelines and checklist for search
- Guidelines for sharing content
- Guidelines for printing
- Guidelines for app settings
- Index of UX guidelines