Chapter 1: Getting Started with Silverlight
Expression Blend 5 and SketchFlow
SQL Server 2008 R2 Express Edition
Silverlight Spy (and .NET Reflector)
Working with the Silverlight Project Templates
Silverlight Navigation Application
Silverlight Business Application
WCF RIA Services Class Library
Silverlight Unit Test Application
Workshop: Creating a Silverlight Project
Exploring the Base Silverlight Business Application
Exploring the Initial Silverlight Project Structure
The Web Application Project Structure
The Silverlight Application Project Structure
Recommended Project Template Modifications
Chapter 2: An Introduction to XAML
Overcoming XAML's Steep Learning Curve
Understanding XAML Syntax, Document Structure, and Features
Assigning Property Values to Controls
XAML vs. Windows Forms Controls' Property Names
Workshop: Creating a Simple User Interface
Working with Resources and Resource Dictionaries
Defining and Referencing Resources
Applying the Style to a Control
Setting the Source of a Binding
Workshop: Binding to an Object
Enhancing the Designer/Developer Workflow
Designing XAML User Interfaces from a Different Perspective
Chapter 3: The Navigation Framework
Getting Started with the Navigation Framework
Exploring the Components of the Navigation Framework
Navigating using the Frame Control
Navigating using the NavigationService Object
Using a HyperlinkButton Control
Using the Source Property of the Frame Control
Passing Data Using Query String Parameters
Reading Query String Parameters
Passing Complex Data Types Between Views
Enabling Friendly URIs with URI Mapping
Integrating with the Browser History
Workshop: Practicing with Views and Navigation
Part 2: Passing Data Between Views
Applying Visual Transition Effects
Creating Custom Content Loaders
Working with Alternative User Interface Frameworks
Chapter 4: Exposing Data from the Server
Why Expose Data from the Server via Services
Creating a Data Access Layer Using the Entity Framework
Workshop: Creating an Entity Model
The Silverlight-Enabled WCF Service Item Template
Sharing Code and Business Objects Between the Server and Client
Workshop: Creating a WCF Service
An Overview of How to Use WCF RIA Services
How the WCF RIA Services Code Generator Works
Creating the RIA Services Link
Sharing Code and Logic Across Tiers
Encapsulating Logic in a Separate WCF RIA Services Class Library
Handling Data Concurrency Violations
The WCF RIA Services Contrib Project
Duplex Communication (Pull + Push)
Chapter 5: Consuming Data from the Server
Consuming Data from the Server Using WCF Services
Workshop: Querying Data Exposed by a WCF Service
Consuming Data from the Server Using RIA Services
Inspecting the Generated Code in the Silverlight Project
Consuming Data Declaratively in XAML via the DomainDataSource Control
Consuming Data in Code via the Domain Context Class
Explicitly Specifying a Domain Service Host
Submitting Changes to the Server Using RIA Services
Workshop: Submitting Changes via a Domain Context
Handling Concurrency Violations
Implementing Cross-Domain Policies for HTTP-Based Communication
Implementing Cross-Domain Policies for Socket-Based Communication
Implementing Cross-Scheme Access Policies
Chapter 6: Implementing Summary Lists
Populating a Summary List with Data
The ObservableCollection<T> Type
Binding a Summary List to a DomainDataSource Control
Binding a Summary List to a View Model Class
Manipulating Summary List's Contents
Workshop: Filtering the Summary List
Workshop: Sorting the Summary List
Workshop: Grouping the Summary List
Workshop: Paging the Summary List
Using the BusyIndicator Control
Displaying the BusyIndicator Control
Customizing the BusyIndicator Control's Content
Navigating to the Details View
Opening Details in a Pop-Up Window
Displaying Details Using the DataGrid's Row Details
Implementing a Master/Details View
Chapter 7: Building Data Entry Forms
Creating the Data Entry User Interface
Laying Out the Data Entry Form
Refining the Data Entry Form's Functionality
Using the DataGrid for Data Entry
Structuring Objects for Use by Data Entry Forms
Implementing the INotifyPropertyChanged Interface
Implementing the IEditableObject Interface
Adding Calculated Properties to Your Classes
Reporting Validation Errors from Objects
Exposing Object-Level Validation Errors
Handling Validation Errors in Your View's Code-Behind
Executing Validation Rules Implemented as Attributes
Customizing Validation Attribute Error Messages
Workshop: Creating a Master/Details Screen
Chapter 8: Securing Your Application
Implementing Server-Side Security Using RIA Services
Using the ASP.NET Membership API
Configuring Your Database for Forms Authentication
Restricting Access to Operations by Role
Returning a Subset of Data Based on the User's ID or Role
Permitting Update/Delete Operations According to Data
Exposing Custom User Profile Data
Avoiding SQL Injection Attacks
Sanitizing Errors Sent to the Client
Workshop: Practicing with Server-Side Security
Implementing Client-Side Security
Authenticating and Registering Users
Accessing and Updating User Information
Implementing Client-Side Restrictions
Workshop: Practicing with Client-Side Security
Encrypting Data Passed Between the Server and the Client
Restricting Access to Your Application
Chapter 9: Styling Your Application
Considering the Designer/Developer Workflow
Defining Style Resources in the Object Hierarchy
Storing Complex Property Values in Styles
Using Default Control Templates
Using Silverlight Toolkit Themes
Installing Silverlight Navigation and Business Application Themed Project Templates
Effectively Using Icons and Images
Applying Pixel Shaders and Effects
Finding a Control's Style Definition
Applying a Style to a Control Using the XAML Designer
Restoring a Control's Default Style
Ignoring Elements and Attributes
Using OR to Combine Enumerated Values in XAML
Triggers, Actions, and Behaviors
Using Predefined Triggers and Actions
Workshop: Writing Custom Triggers
Workshop: Creating and Using Custom Actions
Creating a Custom Markup Extension
Extending the Binding Markup Extension
Advanced Markup Extension Behavior
Workshop: Implementing the Custom Markup Extension
The Design-Time Data Mechanisms
Defining the Shape of the Data
Creating Consolidated Namespaces
XAML Extensions for Visual Studio 2010
Chapter 11: Advanced Data Binding
Assigning the Source of a Binding
Using the Binding's Source Property
Binding a Control Property Directly to Its Data Context
Detecting When the DataContext's Value Has Changed
Binding to a Property in the View's Code Behind
Instantiating the Class as a Resource in XAML and Binding to It
Instantiating the Class as the Value of a Control's Property
Defining Resources in the Code Behind
Alternative Value When a Source Property Value Is Null
Binding Using Property Element Syntax
Getting and Setting Attached Property Values in Code
Visual Studio Data Binding Expression Builder
Using the Data Sources Tool Window to Create a Resource and Controls That Bind to It
Passing a Parameter to a Command
Chapter 12: Creating User Controls and Custom Controls
Adding Functionality to an Existing Control
Workshop: Creating a Simple User Control
Determining Whether a Control Is Executing in Design-Time or Runtime Mode
Constraining the User Control's Size
Workshop: Creating the Base of a Custom Control
Defining the Control's Default Template
Defining the Control's Behavior
Containing a Single Control as Content
Containing Multiple Controls as Content
Chapter 13: The Model-View-ViewModel (MVVM) Design Pattern
Benefits of Implementing the MVVM Design Pattern
Workshop: Connecting the ViewModel to the View
Communicating Between the View and the ViewModel
Should I Use a MVVM Framework?
Creating a Simple MVVM Framework
Implementing Common Scenarios with MVVM
How Do I Assign a Value to a Control's Property?
How Do I Enable/Disable Controls?
How Do I Display a Validation Error in the View?
How Do I Add/Remove Items from a List?
How Do I Select an Item in a List or Get the Currently Selected Item?
How Do I Control the Filtering, Sorting, Grouping, and Paging of Items Displayed in a List?
How Can I Handle Control Events?
How Do I Revert a ViewModel to a Previous State?
How Do I Prevent the User from Doing Anything While an Asynchronous Operation is in Progress?
How Do I Notify the View When an Asynchronous Operation Is Complete?
How Do I Set Focus to a Control?
How Do I Display a Message Box to the User?
How Do I Start a State Transition or Control an Animation?
How Can I Pass Complex Objects Between Views?
How Do I Navigate to a Different View?
How Do I Show a ChildWindow/Dialog?
How Can My ViewModels Communicate with One Another?
How Can I Use My ViewModels at Design Time?
How Can I Use RIA Services in a MVVM-Friendly Manner?
Should I Implement Dependency Properties or Standard Properties on My ViewModel Class?
Should Model Objects Really Be Exposed Directly to the View?
Should ViewModels Copy Data to and from the Models?
What Should Come First, the View or the ViewModel?
Alternative View / ViewModel Configurations
One ViewModel Serving Multiple Views
One View Interacting with Multiple ViewModels
Chapter 14: The Managed Extensibility Framework
Key Steps in the Composition Process
Managing the Lifetime of Parts
Obtaining New Export Instances on Demand
Workshop: Getting Started with MEF
Workshop: Specifying a Contract
Workshop: Importing Multiple Parts
Workshop: Configuring Catalogs and Downloading Modules
Chapter 15: Printing and Reporting
The Importance of Implementing Reporting
Potential Solutions for Implementing Reporting
Using Silverlight's Printing Functionality
Perpetuum Software's Report Sharp-Shooter for Silverlight
Using Silverlight's Native Printing Functionality
Providing the Content for a Printed Page
Workshop: Printing a Report Created in Code
Generating and Displaying a PDF Report
Generating a Report on the Server
Displaying the Report on the Client
Key Features of the PivotViewer Control
Comparing the Silverlight 4 and Silverlight 5 Versions of the Control
Configuring the PivotViewer Control for Use
Saving and Restoring the PivotViewer Control's State
Uses for the PivotViewer Control
Finding More Information on the PivotViewer Control
Workshop: Implementing the PivotViewer Control
Workshop: Applying an Item Adorner to Trading Cards
Chapter 16: Interacting with the Host Operating System
Running Silverlight Applications Out of the Browser
Installing the Application to Run Out of the Browser
Determining Installation Status
Determining Whether Running Inside or Outside the Browser
Where/How Is the Application's .xap File Stored and Run?
Interacting with the OOB Window
Caching to a Client-Side Database
Detecting Network Connection Availability
File System Open and Save Dialogs
Detecting the Switch to and from Full-Screen Mode
Retaining Full-Screen Mode When Unfocused
Enabling Elevated Trust in OOB Mode
Enabling Elevated Trust Inside the Browser
Creating Additional OOB Windows
Other Restrictions Lifted by Elevated Trust
Restrictions Imposed by Elevated Trust
Enabling/Disabling Elevated Trust Applications with a Windows Group Policy
Chapter 17: Application Deployment
Deploying the Application to the Server
Workshop: Publishing from Visual Studio
Workshop: Creating a Web Package
Workshop: Creating a Setup Program
Deploying the Application to the Client
The Default Silverlight Installation Process
Customizing the Silverlight Installation Experience
Pushing the Silverlight Runtime to Users in the Enterprise
Building a Client Desktop Installer
Forcing an Update of the Cached XAP File for New Versions
Improving on the Default Application Loading Screen
Workshop: Creating the Application Preloader Files
Workshop: Designing the Application Preloader's Appearance
Workshop: Updating the Application Download Progress
Workshop: Configuring the Preloader in the HTML File
Testing the Application Preloader
Digitally Signing Your Application
Obtaining a Code-Signing Certificate