Contents
A Brief History of Windows User Interface Design
Extensible Application Markup Language
Separation of User Interface Concerns
Declarative vs. Imperative Programming
To Code-Behind or Not to Code-Behind?
Chapter 2: Software Craftsmanship
Software as an Art and a Science
To Unit Test or Not to Unit Test?
How to “Talk the Talk” When It Comes to Gathering Requirements
User Stories and How to Create Them
Part II: Laying the Groundwork
Chapter 3: Domain-Driven Design
Introducing Domain-Driven Design
The Domain Model in Domain-Driven Design
The Source Code Is the Design Documentation
CQRS: Command Query Responsibility Segregation
Design Patterns Used Throughout the Book
ICommand: The Cure for the Common Event Handler
Characteristics of a Great Unit Test
All Team Members Should Be Able to Execute Unit Tests
Great Unit Tests Survive the Test of Time
Microsoft Unit Testing Project Template
Chapter 6: Advanced Unit Testing and Test-Driven Development
Use Inheritance to Avoid Duplicate Code
Unit Testing Classes That Have Dependencies
Using the Mock Class to Set Up Your Dependencies
Design by Testing: Test-Driven Development
Chapter 7: Exception Handling and Logging
Enterprise Library Exception Handling Application Block
Installing the Exception Handling Application Block
Installing the Enterprise Configuration Console
Configuring Policies, Exception Types, and Handlers
Configuring the Logging Exception Handler
Logging Options for Windows Device Apps
Visual Studio Application Insights
Part III: Completing the User Interface Layer
Chapter 8: The WPF User Interface
Windows, Pages, and User Controls
ViewModel and INotifyPropertyChanged
Chapter 9: The Windows Phone User Interface
Chapter 10: The Windows User Interface
Windows Software Development Kit
Chapter 11: Deploying and Maintaining Your Application
Choosing a Version Control System
Deploying WPF Applications Using ClickOnce