Clone this wiki locally
Template 10 Documentation
Table of contents
What is Template 10?
Do you have technical questions you want to ask the community? Use the
Template10tag on StackOverflow. http://stackoverflow.com/questions/tagged/template10
Template 10 is a set of Visual Studio project templates. They sling-shot developer productivity by getting ~80% of the boilerplate stuff delivered in the template - things like navigation, suspension, and even a Hamburger control.
Template 10 (Blank)project template (link)
Template 10 (Minimal)project template (link)
Template 10 (Hamburger)project template (link)
Template 10 is intended for Window XAML apps written in C#. You can install Template 10 by searching for "Template 10" in the Visual Studio 2015 Extension Manager. Once installed, Template 10 templates will show up in the New Project dialog.
Template 10 templates share the Template 10 library in NuGet. This hosts the serviceable code and keeps the templates simple. It's a library that our templates or existing projects can include in their apps.
Template 10 (library)in NuGet (link)
Credit where credit is due
Template 10 is the brainchild of Microsoft Developer Evangelism and was started there. Lots of learnings from Windows 8, including lots from the Pattern's and Practices Prism.StoreApps framework are in the code base.
Why are you saying T10 is convention-based?
The philosophy is this: we want you do it our way unless you want to do it your way. You are the developer and only you know your app well enough to make big decisions. But, without a good reason to do it another way, do it our way. It's not about telling you to do it our way, it's about telling you to do it our way unless you don't want to. It's about guidance. It's about conventions. And, it's about flexibility.
Here are some of our conventions:
- We put views (XAML files) in a /Views folder (and ns)
- We only have one view-model for one view
- We put our view-models in a /ViewModels folder (and ns)
- We use OnNavigatedTo in view-models, not pages
- We put our models in a /Models folder (and ns)
- We often use the façade pattern with our models
- We navigate using a NavigationService
- We communicate with a Messenger
- We like Dependency Injection
- We use Template 10 ;-)
What's in Template 10?
- There are controls
- There are behaviors.
- There are services
- There are converters
- There are MVVM classes (BindableBase, DelegateCommand, and ViewModelBase)
- There are utility classes (Template.Utils)
- There are project templates (Blank, Minimal)
- There is a NuGet package
- There are samples, many samples!
Where have I heard about Template 10?
- On Microsoft Virtual Academy's Developer's Guide to Windows 10
- On Microsoft official Windows 10 Hands-on-Labs
- At the Microsoft Windows 10 Tour events
- In Microsoft Press Windows 10 exam-prep books
Who's contributing to Template 10?
- Jerry Nixon, co-author of Developer's Guide to Windows 10.
- Daren May, co-author of official Windows 10 hands on labs.
- Robert Evans, lead field engineer and consultant for Windows apps.
- Microsoft (PFE) premier field engineers, worldwide.
- Internal Microsoft product teams who contribute and advise.
- Internal Microsoft platform teams who contribute and advise.
- Community developers, like you, who submit pull requests all the time.
Does Template 10 require MVVM?
No. Though it's difficult to imagine any XAML app not using model-view-view-model, there is nothing in Template 10 that requires you to use it. Template 10 is compatible with any MVVM framework.
To leverage other MVVM frameworks, simply inherit from Template10.Mvvm.ViewModelBase or implement Template10.Services.NavigationService.INavigable. This enables OnNavigatedTo/From in your view-models.
Is Template 10 right for me?
Probably. Template 10 packs in as many time-saving lessons-learned as possible. It's perfect for new apps, or apps wanting to leverage the library. That being said, it's not for everyone (probably 90% of Windows XAML apps).
Known Issues with Template10
There are a couple of known issues with Template 10 v1.1.10.
- When HamburgerButtonInfo.ButtonType is set to Command, the Visibility property of the button isn't respected.
- On initial load, the state of the HamburgerMenu can be incorrect (in some instances).
- HamburgerButtonInfo.Visibility defaults to Visible when the HamburgerMenu is full screen.
- The HamburgerMenu's initial color is transparent, which looks stupid.