Table of Contents – Silverlight 2 in Action, illustrated edition

Table of Contents

Copyright

Brief Table of Contents

Table of Contents

Foreword

Preface

Acknowledgments

About this book

Chapter 1. Introducing Silverlight

1.1. Silverlight up your life

1.1.1. Productivity

1.1.2. Performance

1.1.3. Portability

1.2. Why can’t we be friends?

1.2.1. The developer experience

1.2.2. The designer experience

1.3. XAML

1.3.1. Code behind

1.3.2. Namespaces

1.3.3. Compound properties

1.3.4. Attached properties

1.4. Blending it together

1.5. Summary

Chapter 2. Harmony with the web

2.1. The relationship between Silverlight and the HTML DOM

2.1.1. The HTML Document Object Model

2.1.2. The Silverlight plug-in

2.1.3. The Silverlight Object Model

2.2. Creating a Silverlight plug-in

2.2.1. The Silverlight utility file: Silverlight.js

2.2.2. Creating an instance of the Silverlight plug-in

2.3. Integrating a Silverlight plug-in

2.3.1. Relating the Silverlight application to the HTML DOM

2.3.2. Clarifying the initial experience

2.3.3. Handling plug-in events

2.3.4. Sending initialization parameters

2.4. The Silverlight Application Model

2.4.1. The manifest file

2.4.2. The Silverlight application

2.4.3. Application dependencies

2.5. Interacting with the HTML DOM

2.5.1. Managing the web page from managed code

2.5.2. Working with the user’s browser window

2.5.3. Bridging the scripting and managed code worlds

2.6. Summary

Chapter 3. Back to the basics: Layout and text

3.1. A Canvas for your Imagination

3.1.1. Arranging Content of a Canvas

3.1.2. The Canvas: Packing a Punch

3.2. The StackPanel: Stack ’em Deep

3.3. The Power Grid

3.3.1. Arranging Grid Content

3.3.2. Sizing it Up

3.3.3. Working with the Grid Programmatically

3.3.4. Customizing Cell Boundaries

3.4. Displaying Text

3.4.1. Font Properties

3.4.2. Flow Control

3.4.3. Text Properties

3.4.4. Spacing

3.5. The UIElement and FrameworkElement

3.5.1. Properties

3.5.2. Methods

3.6. Summary

Chapter 4. Handling user interaction

4.1. Understanding device support

4.1.1. Capturing the keyboard

4.1.2. Trapping the mouse

4.2. Delivering text controls

4.2.1. Handling basic text

4.2.2. Collecting sensitive data

4.3. Button controls

4.3.1. The Button

4.3.2. The HyperlinkButton

4.3.3. The RadioButton

4.3.4. The CheckBox

4.4. The ItemsControl

4.4.1. The ListBox

4.4.2. The ComboBox

4.4.3. The TabControl

4.5. Date controls

4.5.1. Calendar

4.5.2. DatePicker

4.6. Choosing from a numeric range

4.6.1. Using the ProgressBar

4.6.2. Implementing a Slider

4.7. Displaying visual prompts

4.7.1. Popping up a dialog box

4.7.2. Prompting for a file

4.8. Miscellaneous controls

4.8.1. Creating a border

4.8.2. Collecting drawings

4.9. Summary

Chapter 5. Getting down with data binding

5.1. Binding with your data

5.1.1. Mastering the binding syntax

5.1.2. Choosing a binding mode

5.2. Understanding your data source

5.2.1. Binding to a property

5.2.2. Binding to an object

5.2.3. Binding to a collection

5.3. Customizing the display

5.3.1. Converting values during binding

5.3.2. Creating data templates

5.4. The DataGrid

5.4.1. Displaying your data

5.4.2. Editing grid data

5.4.3. Sorting items

5.5. Language Integrated Query (LINQ)

5.5.1. Introducing LINQ

5.5.2. LINQ to Objects

5.5.3. LINQ to XML

5.5.4. LINQ-ing it together

5.6. Summary

Chapter 6. Networking and communications

6.1. Trust, security, and browser limitations

6.1.1. It’s all a matter of trust

6.1.2. Making your application secure

6.1.3. Limitations of the browser

6.2. Connecting to data sources

6.2.1. Using SOAP services

6.2.2. Time for a REST

6.3. Making the data usable

6.3.1. Reading POX

6.3.2. Converting JSON

6.3.3. Reading syndicated feeds

6.4. Using advanced services

6.4.1. WCF service enhancements

6.4.2. WCF duplex services

6.4.3. Connecting to sockets

6.5. Summary

Chapter 7. Managing digital media

7.1. Stunning audio and video

7.1.1. Getting to the source

7.1.2. Common properties

7.1.3. Audio specifics

7.1.4. Video specifics

7.1.5. The lifecycle of a media file

7.2. Playlists: for that web-based mixtape

7.2.1. Understanding client-side playlists

7.2.2. Using server-side playlists

7.3. Interactive playback

7.3.1. Controlling the play state

7.3.2. Timely interaction

7.3.3. Going full screen

7.4. Using protected content

7.4.1. Requesting protected content

7.4.2. Retrieving the PlayReady components

7.4.3. Unlocking protected content

7.5. Using images in your application

7.5.1. Basic imaging

7.5.2. Deep Zoom

7.6. The 7th inning stretch: Dealing with dead space

7.6.1. I’ll have none of this stretching business

7.6.2. Uniform sizing

7.6.3. Fill the area

7.6.4. UniformToFill

7.7. Summary

Chapter 8. Getting a grip on graphics

8.1. Getting in shape

8.1.1. A Line in the sand

8.1.2. Rectangle

8.1.3. The ellipse

8.1.4. Polyline

8.1.5. Polygon

8.2. Geometry

8.2.1. Simple geometries

8.2.2. Path geometries

8.2.3. Composite geometries

8.3. Brushes

8.3.1. SolidColorBrush

8.3.2. LinearGradientBrush

8.3.3. RadialGradientBrush

8.3.4. ImageBrush

8.3.5. VideoBrush

8.4. Transforms

8.4.1. RotateTransform

8.4.2. ScaleTransform

8.4.3. SkewTransform

8.4.4. TranslateTransform

8.4.5. TransformGroup

8.5. Blending it together

8.6. Summary

Chapter 9. Bringing it to life: Animation

9.1. Animation: It’s about time

9.2. Mastering the timeline

9.2.1. What type of property are you animating?

9.2.2. Where are you starting from and where are you going?

9.2.3. How long should the animation run?

9.3. Storyboarding

9.3.1. Understanding the storyboard

9.3.2. Hitting the target

9.3.3. Controlling the Storyboard

9.3.4. Being resourceful

9.4. Key framing

9.4.1. Interpolation: it’s about acceleration

9.4.2. Timing is everything

9.5. Summary

Chapter 10. Giving it style

10.1. Being resourceful

10.1.1. Declarative resources

10.1.2. Accessing loose resources

10.1.3. Bundling resources

10.2. Giving your elements style

10.2.1. Defining the look

10.2.2. Targeting style definitions

10.3. Creating templates

10.3.1. Building a control template

10.3.2. Creating reusable templates

10.4. Dealing with visual states

10.4.1. Understanding the components

10.5. Leveraging the VisualStateManager

Creating State-Based Effects

Define Transitioning Effects

10.6. Sharing your effects

10.7. Summary

Chapter 11. Enhancing the experience

11.1. Storing data in isolated storage

11.1.1. IsolatedStorageFile: The virtual filesystem

11.1.2. Reading and writing files: The isolated storage way

11.1.3. Administering the isolated storage

11.2. Using XAML at runtime

11.3. BackgroundWorker

11.3.1. Doing the work

11.3.2. Updating the UI

11.4. Retrieving content on demand

11.4.1. Requesting content

11.4.2. Managing larger download requests

11.4.3. Loading the content

11.5. The Dynamic Language Runtime (DLR)

11.5.1. Dynamic typing

11.5.2. Metaprogramming

11.6. Summary

Chapter 12. Share the light: Distribution and deployment

12.1. Creating a user control

12.1.1. Defining the appearance

12.1.2. Defining the behavior

12.1.3. Calling the control

12.2. Architecting navigation in Silverlight

12.2.1. Setting up the architecture

12.2.2. Implementing a navigator

12.2.3. Navigating between pages (a.k.a. UserControls)

12.3. Using a custom splash screen

12.3.1. Creating the appearance

12.3.2. Integrating the custom splash screen

12.3.3. Monitoring the load progress

12.4. Hosting with Silverlight Streaming

12.4.1. Preparing to stream!

12.4.2. Pack it up!

12.4.3. Ship it!

12.4.4. Use it!

12.5. Summary

Index

List of Figures

List of Tables

List of Examples