Table of contents : Sams WPF Control Development Unleashed (2009) (ATTiCA)......Page 5 About the Authors......Page 14 Dedications......Page 15 We Want to Hear from You!......Page 18 1 The WPF Design Philosophy......Page 20 Data and Behavior......Page 21 Working with Data......Page 22 Working with Behaviors......Page 25 The User Experience......Page 27 The User Experience Benevolent Circle......Page 28 Summary......Page 29 Introducing the Visual Classes......Page 30 Summary......Page 48 Overcoming the “Start from Scratch” Instinct......Page 50 Sample: Building a Circular Minute Timer......Page 59 Summary......Page 66 Layout Defined......Page 68 How Layout Works......Page 70 Working with Visual Children......Page 71 Creating a Custom Panel: The VanishingPointPanel......Page 75 Building a Panel with Attached Properties: WeightedPanel......Page 77 Using Transformations with Layout......Page 82 Summary......Page 87 5 Using Existing Controls......Page 88 Customizing Existing Controls......Page 89 Customizing the ItemsControl......Page 91 Customizing a ListBox......Page 93 Creating a Custom ScrollBar......Page 97 Using Brushes to Create Advanced Visuals......Page 101 Customization Sample—The Radar Screen......Page 102 Summary......Page 110 Overview of Attached Properties......Page 112 Using Attached Properties as Extension Points......Page 119 Implementing Drag and Drop with Attached Properties......Page 122 Summary......Page 130 The Anatomy of a Scrollbar......Page 132 The Magic of IScrollInfo......Page 134 Building a Custom Panel with Custom Scrolling......Page 136 Animated Scrolling......Page 141 Taking Scrolling to the Next Step......Page 142 Scrolling Without IScrollInfo......Page 143 Summary......Page 146 Virtualization Distilled......Page 148 UI Virtualization in WPF......Page 150 Summary......Page 161 Lasso Selection Using the InkCanvas......Page 162 Building a Dock Slide Presenter......Page 165 Building a Transition Abstraction: The TransitionContainer......Page 173 Implementing Popular Visual Effects......Page 180 Summary......Page 185 10 Control Skinning and Themes......Page 186 Introduction to Skins and Themes......Page 187 Using Resources in Default Styles......Page 189 Creating Theme-Specific Styles......Page 191 Enabling Runtime Skinning......Page 193 Control Customization Through Property Exposure......Page 201 Summary......Page 202 A Brief Introduction to 3D Worlds......Page 204 Using the Viewport3D Element......Page 205 Mapping 2D Visuals on 3D Surfaces......Page 211 2D Bounds of a 3D Object......Page 217 Summary......Page 220 Procedural Animations......Page 222 Animating with Storyboards......Page 225 Creating Custom Animations......Page 231 Animating Within the DrawingContext......Page 239 Summary......Page 240 13 Pixel Shader Effects......Page 242 Working with Shaders......Page 243 Writing Custom Shaders......Page 247 Summary......Page 261 Routed Events......Page 262 Commands......Page 274 Focus Management......Page 285 Summary......Page 292 15 Advanced Data Binding......Page 294 Dependency Properties......Page 295 Special Data Binding Scenarios......Page 301 The Dispatcher and DispatcherPriority......Page 304 Introduction to Continuous LINQ (CLINQ)......Page 310 Summary......Page 311 Control Design Tips......Page 314 Useful Patterns for GUI Development......Page 320 Visual Design Tips......Page 323 Some Useful Tools......Page 331 Summary......Page 334 17 Performance......Page 336 Different Kinds of Performance......Page 337 Measuring Performance......Page 345 Perceived Responsiveness......Page 348 Summary......Page 349 The Need for UI Automation......Page 350 The Automation Object Model......Page 351 Using the Automation API......Page 357 Automation of a Custom Control......Page 362 Summary......Page 368 A......Page 370 C......Page 371 D......Page 373 F......Page 374 I......Page 375 L......Page 376 N......Page 377 P......Page 378 Q–R......Page 379 S......Page 380 U......Page 381 V......Page 382 W–Z......Page 383