Title Page Copyright and Credits Mastering Windows Presentation Foundation Second Edition About Packt Why subscribe? Contributors About the author About the reviewer Packt is searching for authors like you Preface Who this book is for What this book covers To get the most out of this book Download the example code files Download the color images Conventions used Get in touch Reviews A Smarter Way of Working with WPF What is MVVM and how does it help? Models View Models Views Data binding So how does MVVM help? Is there a downside? Debunking the myth about code behind Learning how to communicate again Introducing the ICommand interface Handling events in Attached Properties Making use of delegates Structuring the application code base Summary Debugging WPF Applications Utilizing the output window Putting Presentation Trace Sources to work Discovering inner exceptions Debugging data bound values Outputting values to UI controls Catching changing Dependency Property values Exploiting converters Summary Writing Custom Application Frameworks What is an application framework? Encapsulating common functionality In base classes Through interfaces With Extension Methods In UI controls With converters Constructing a custom application framework Separating the Data Access Layer Providing services Implementing Dependency Injection Connecting Views with View Models Locating View Models Summary Becoming Proficient with Data Binding Data binding basics Binding path syntax Escaping invalid characters Exploring the Binding class Directing data bound traffic Binding to different sources Binding with priority Binding from within control templates Binding source changes Converting data bound values Binding multiple sources to a single target property Dependency Properties Setting metadata Declaring read-only Dependency Properties Registering Attached Properties Prioritizing value setting sources Data templates Taking complete control Displaying hierarchical data Data binding to enumeration collections Summary Using the Right Controls for the Job Investigating the built-in controls Inheriting framework abilities Laying it on the line Containing controls Canvas DockPanel Grid StackPanel UniformGrid WrapPanel Providing custom layout behavior Content controls Presenting content Items controls Adorners Modifying existing controls Styling Being resourceful Merging resources Triggering changes Templating controls Attaching properties Combining controls Creating custom controls Summary Adapting the Built-In Controls Inspecting protected methods Clipping the layout Altering default behavior Creating overridable methods Tailoring to attain our requirements Populating with Data Progressing toward the Target Highlighting the selection Indicating in the Axes Emphasizing the Selection Summary Mastering Practical Animations Investigating timelines Introducing key-frames Telling stories Controlling storyboards Easing functions Animating along a path Creating everyday animations Summary Creating Visually Appealing User Interfaces Styling applications consistently Overriding default control styles Using professional icons Layering visuals Throwing shadows Declaring multiple borders Reusing composite visuals Reflecting light Creating glowing effects Putting it all together Moving away from the ordinary Casting reflections Exploring borderless windows Visualizing data Livening up the UI controls Summary Implementing Responsive Data Validation Using validation rules – to do or not to do? Getting to grips with validation interfaces Implementing the IDataErrorInfo interface Introducing the INotifyDataErrorInfo interface Annotating data Varying levels of validation Incorporating multiple validation techniques Customizing the error template Avoiding UI-based validation errors Keeping Synchronized with Legacy Behavior Amalgamating validation and visuals Summary Completing that Great User Experience Providing user feedback Utilizing multiple threads Discovering the Async and Await keywords Building asynchrony into our framework Going the extra mile Producing in-application help Enabling user preferences Extending common courtesies Unburdening the end user Summary Improving Application Performance Leveraging the power of hardware rendering Making more efficient resources Freezing objects Using the right controls for performance Drawing conclusions Imaging more efficiently Enhancing the performance of textual output Liking the linking Data binding Registering Dependency Properties Binding to collections Shrinking data objects Virtualizing collections Handling events Summary Deploying Your Masterpiece Application Installing Windows applications Introducing the Setup Project Working with the InstallShield Limited Edition project Utilizing ClickOnce functionality Securing deployments Isolating storage Accessing application versions Summary What Next? Turning your attention to future projects Improving our application framework Logging errors Using online resources Other Books You May Enjoy Leave a review - let other readers know what you think