Chad Campbell is a Microsoft MVP and solutions architect. He has been developing enterprise-level web applications with a wide variety of technologies since 1999. Beginning with the initial public release of what would become Silverlight in 2006, Chad hit the ground running and has not looked back. He holds MCSD and MCTS certifications. In addition, Chad has a BS degree from Purdue University where he focused his studies on computer science and minored in psychology.
Foreword | p. xiii |
Preface | p. xv |
Acknowledgments | p. xvii |
About this book | p. xx |
Introducing Silverlight | p. 1 |
Silverlight up your life | p. 2 |
Productivity | p. 2 |
Performance | p. 3 |
Portability | p. 3 |
Why can't we be friends? | p. 6 |
The developer experience | p. 7 |
The designer experience | p. 8 |
XAML | p. 8 |
Code behind | p. 9 |
Namespaces | p. 10 |
Compound properties | p. 12 |
Attached properties | p. 12 |
Blending it together | p. 13 |
Summary | p. 21 |
Harmony with the web | p. 22 |
The relationship between Silverlight and the Html Dom | p. 23 |
The HTML Document Object Model | p. 24 |
The Silverlight plug-in | p. 25 |
The Silverlight Object Model | p. 25 |
Creating a Silverlight plug-in | p. 26 |
The Silverlight utility file: Silverlight.js | p. 27 |
Creating an instance of the Silverlight plug-in | p. 28 |
Integrating a Silverlight plug-in | p. 29 |
Relating the Silverlight application to the HTML DOM | p. 30 |
Clarifying the initial experience | p. 32 |
Handling plug-in events | p. 36 |
Sending initialization parameters | p. 38 |
The Silverlight Application Model | p. 39 |
The manifest file | p. 40 |
The Silverlight application | p. 41 |
Application dependencies | p. 44 |
Interacting with the HTML DOM | p. 44 |
Managing the web page from managed code | p. 44 |
Working with the user's browser window | p. 48 |
Bridging the scripting and managed code worlds | p. 51 |
Summary | p. 55 |
Back to the basics: Layout and text | p. 56 |
A Canvas for your imagination | p. 57 |
Arranging content of a Canvas | p. 58 |
The Canvas: packing a punch | p. 60 |
The StackPanel: Stack 'em deep | p. 61 |
The power Grid | p. 62 |
Arranging Grid content | p. 63 |
Sizing it up | p. 65 |
Working with the Grid programmatically | p. 68 |
Customizing cell boundaries | p. 69 |
Displaying text | p. 72 |
Font properties | p. 72 |
Flow control | p. 76 |
Text properties | p. 76 |
Spacing | p. 78 |
The UIElement and FrameworkElement | p. 80 |
Properties | p. 80 |
Methods | p. 85 |
Summary | p. 86 |
Handling user interaction | p. 88 |
Understanding device support | p. 89 |
Capturing the keyboard | p. 89 |
Trapping the mouse | p. 92 |
Delivering text controls | p. 96 |
Handling basic text | p. 96 |
Collecting sensitive data | p. 98 |
Button controls | p. 99 |
The Button | p. 100 |
The HyperlinkButton | p. 101 |
The RadioButton | p. 102 |
The CheckBox | p. 104 |
The ItemsControl | p. 105 |
The ListBox | p. 105 |
The ComboBox | p. 107 |
The TabControl | p. 108 |
Date controls | p. 110 |
Calendar | p. 110 |
DatePicker | p. 113 |
Choosing from a numeric range | p. 114 |
Using the ProgressBar | p. 115 |
Implementing a Slider | p. 115 |
Displaying visual prompts | p. 116 |
Popping up a dialog box | p. 116 |
Prompting for a file | p. 118 |
Miscellaneous controls | p. 121 |
Creating a border | p. 121 |
Collecting drawings | p. 121 |
Summary | p. 124 |
Getting down with data binding | p. 126 |
Binding with your data | p. 127 |
Mastering the binding syntax | p. 127 |
Choosing a binding mode | p. 129 |
Understanding your data source | p. 131 |
Binding to a property | p. 131 |
Binding to an object | p. 133 |
Binding to a collection | p. 134 |
Customizing the display | p. 136 |
Converting values during binding | p. 136 |
Creating data templates | p. 139 |
The DataGrid | p. 141 |
Displaying your data | p. 142 |
Editing grid data | p. 147 |
Sorting items | p. 148 |
Language Integrated Query (LINQ) | p. 149 |
Introducing LINQ | p. 149 |
LINQ to Objects | p. 153 |
LINQ to XML | p. 154 |
LINQ-ing it together | p. 156 |
Summary | p. 158 |
Networking and communications | p. 159 |
Trust, security, and browser limitations | p. 160 |
It's all a matter of trust | p. 160 |
Making your application secure | p. 163 |
Limitations of the browser | p. 164 |
Connecting to data sources | p. 165 |
Using SOAP services | p. 165 |
Time for a REST | p. 170 |
Making the data usable | p. 173 |
Reading POX | p. 173 |
Converting JSON | p. 177 |
Reading syndicated feeds | p. 179 |
Using advanced services | p. 185 |
WCF service enhancements | p. 185 |
WCF duplex services | p. 186 |
Connecting to sockets | p. 191 |
Summary | p. 193 |
Managing digital media | p. 194 |
Stunning audio and video | p. 195 |
Getting to the source | p. 195 |
Common properties | p. 199 |
Audio specifics | p. 201 |
Video specifics | p. 203 |
The lifecycle of a media file | p. 203 |
Playlists: for that web-based mixtape | p. 205 |
Understanding client-side playlists | p. 205 |
Using server-side playlists | p. 207 |
Interactive playback | p. 209 |
Controlling the play state | p. 209 |
Timely interaction | p. 210 |
Going full screen | p. 212 |
Using protected content | p. 213 |
Requesting protected content | p. 214 |
Retrieving the PlayReady components | p. 214 |
Unlocking protected content | p. 215 |
Using images in your application | p. 215 |
Basic imaging | p. 216 |
Deep Zoom | p. 216 |
The 7th inning stretch: Dealing with dead space | p. 222 |
I'll have none of this stretching business | p. 222 |
Uniform sizing | p. 223 |
Fill the area | p. 224 |
UniformToFill | p. 225 |
Summary | p. 225 |
Getting a grip on graphics | p. 226 |
Getting in shape | p. 227 |
A Line in the sand | p. 228 |
Rectangle | p. 229 |
The ellipse | p. 230 |
Polyline | p. 230 |
Polygon | p. 231 |
Geometry | p. 231 |
Simple geometries | p. 232 |
Path geometries | p. 233 |
Composite geometries | p. 235 |
Brushes | p. 235 |
SolidColorBrush | p. 236 |
LinearGradientBrush | p. 237 |
RadialGradientBrush | p. 239 |
ImageBrush | p. 240 |
VideoBrush | p. 241 |
Transforms | p. 242 |
RotateTransform | p. 242 |
ScaleTransform | p. 243 |
SkewTransform | p. 243 |
TranslateTransform | p. 244 |
TransformGroup | p. 244 |
Blending it together | p. 245 |
Summary | p. 251 |
Bringing it to life: Animation | p. 253 |
Animation: It's about time | p. 254 |
Mastering the timeline | p. 256 |
What type of property are you animating? | p. 256 |
Where are you starting from and where are you going? | p. 258 |
How long should the animation run? | p. 261 |
Storyboarding | p. 264 |
Understanding the storyboard | p. 264 |
Hitting the target | p. 265 |
Controlling the Storyboard | p. 267 |
Being resourceful | p. 269 |
Key framing | p. 271 |
Interpolation: It's about acceleration | p. 273 |
Timing is everything | p. 276 |
Summary | p. 277 |
Giving it style | p. 278 |
Being resourceful | p. 279 |
Declarative resources | p. 279 |
Accessing loose resources | p. 282 |
Bundling resources | p. 284 |
Giving your elements style | p. 286 |
Defining the look | p. 287 |
Targeting style definitions | p. 289 |
Creating templates | p. 290 |
Building a control template | p. 291 |
Creating reusable templates | p. 295 |
Dealing with visual states | p. 295 |
Understanding the components | p. 296 |
Leveraging the VisualStateManager | p. 298 |
Sharing your effects | p. 301 |
Summary | p. 303 |
Enhancing the experience | p. 305 |
Storing data in isolated storage | p. 306 |
IsolatedStorageFile: The virtual filesystem | p. 306 |
Reading and writing files: The isolated storage way | p. 311 |
Administering the isolated storage | p. 314 |
Using XAML at runtime | p. 314 |
BackgroundWorker | p. 316 |
Doing the work | p. 316 |
Updating the UI | p. 317 |
Retrieving content on demand | p. 321 |
Requesting content | p. 322 |
Managing larger download requests | p. 323 |
Loading the content | p. 325 |
The Dynamic Language Runtime (DLR) | p. 332 |
Dynamic typing | p. 332 |
Metaprogramming | p. 335 |
Summary | p. 337 |
Share the light: Distribution and deployment | p. 338 |
Creating a user control | p. 339 |
Defining the appearance | p. 339 |
Defining the behavior | p. 340 |
Calling the control | p. 344 |
Architecting navigation in Silverlight | p. 344 |
Setting up the architecture | p. 345 |
Implementing a navigator | p. 346 |
Navigating between pages (a.k.a. UserControls) | p. 347 |
Using a custom splash screen | p. 348 |
Creating the appearance | p. 348 |
Integrating the custom splash screen | p. 350 |
Monitoring the load progress | p. 351 |
Hosting with Silverlight Streaming | p. 351 |
Preparing to stream! | p. 352 |
Pack it up! | p. 352 |
Ship it! | p. 354 |
Use it! | p. 354 |
Summary | p. 355 |
Index | p. 357 |
Table of Contents provided by Ingram. All Rights Reserved. |
The New copy of this book will include any supplemental materials advertised. Please check the title of the book to determine if it should include any access cards, study guides, lab manuals, CDs, etc.
The Used, Rental and eBook copies of this book are not guaranteed to include any supplemental materials. Typically, only the book itself is included. This is true even if the title states it includes any access cards, study guides, lab manuals, CDs, etc.