Study Guide for the Windows Presentation Framework exam 70-511

Well, my manager has made a reasonable request that I study for and take the Windows Presentation Framework exam 70-511.  Which means I have to structure what is my usual random and haphazard way of learning.  To prepare for the 70-511 exam, my process is usually to:

  1. Whine about having to take the exam
  2. Procrastinate for a period of time (today was especially good since one of the lines from my hotwater heater burst from the joy of the holiday season)
  3. Whine a little more, but start to collect the material needed to study
  4. Begin to study by reading a book, which usually isn’t enough to pass an exam
  5. Set up a study environment
  6. Whine just a little more and then really dig in
  7. Ok now I am going to start
  8. Now
  9. Really now

Here is what I need to study, I am currently at 0%.

Building a User Interface by Using Basic Techniques (23%)
  • Choose the most appropriate control class. This objective may include but is not limited to: evaluating design requirements and then selecting the most appropriate control based on those requirements; recognizing when none of the standard controls meet requirements; item controls, menu controls, content controls This objective does not include: designing a custom control
  • Implement screen layout by using nested control hierarchies. This objective may include but is not limited to: using panel-derived controls, attaching properties This objective does not include: items controls, control customization
  • Create and apply styles and theming. This objective may include but is not limited to: application-level styles, overriding styles, style inheritance, Generic.xaml, theming attributes This objective does not include: data-grid view style sharing
  • Manage reusable resources. This objective may include but is not limited to: fonts, styles, data sources, images, resource dictionaries, resource-only DLLs
  • Implement an animation in WPF. This objective may include but is not limited to: creating a storyboard; controlling timelines; controlling the behavior when the animation completes; double, color, and point animations; starting an animation from code and from XAML This objective does not include: direct rendering updates, implementing key frame animations
Enhancing a User Interface by Using Advanced Techniques (21%)
  • Manage routed events in WPF. This objective may include but is not limited to: tunneling vs. bubbling events, handling and cancelling events This objective does not include: simple event handling; creating custom events
  • Configure WPF commanding. This objective may include but is not limited to: defining WPF commands based on RoutedCommand; associating commands to controls; handling commands; command bindings; input gestures This objective does not include: creating custom commands by implementing ICommand
  • Modify the visual interface at run time. This objective may include but is not limited to: adding/removing controls at run time; manipulating the visual tree; control life cycle; generating a template dynamically This objective does not include: instantiating forms and simple modification of control properties at runtime
  • Implement user-defined controls. This objective may include but is not limited to: deciding whether to use a user/composite, extended, or custom control ; creating a user/composite control; extending from an existing control This objective does not include: creating a custom control by inheriting directly from the Control class and writing code
  • Create and display graphics. This objective may include but is not limited to: creating and displaying graphics by using geometric transformation; brushes; drawing shapes; clipping; double buffering; overriding Render (WPF) and OnPaint (WinForms); differentiating between retained and non-retained graphics This objective does not include: creating and displaying three-dimensional graphics; hit testing; creating images
  • Add multimedia content to an application in WPF. This objective may include but is not limited to: media player vs. media element; adding a sound player; images This objective does not include: buffering
  • Create and apply control templates in WPF. This objective may include but is not limited to: template binding This objective does not include: styling and theming; data templating
  • Create data, event, and property triggers in WPF.
Managing Data at the User Interface Layer (23%)
  • Implement data binding. This objective may include but is not limited to: binding options, static and dynamic resources, element bindings, setting the correct binding mode and update mode; binding to nullable values This objective does not include: binding to a specific data source
  • Implement value converters in WPF. This objective may include but is not limited to: implementing custom value converters, implementing multivalue converters
  • Implement data validation. This objective may include but is not limited to: handling validation and providing user feedback via the error provider (WinForms) or data templates (WPF), IDataErrorInfo, validation control, form validation and control validation
  • Implement and consume change notification interfaces. This objective may include but is not limited to: implementing INotifyPropertyChanged; using INotifyCollectionChanged (ObservableCollection)
  • Prepare collections of data for display. This objective may include but is not limited to: filtering, sorting, and grouping data; LINQ; CollectionView (WPF), BindingSource object (WinForms)
  • Bind to hierarchical data. This objective may include but is not limited to: TreeView; MenuControl
  • Implement data-bound controls. This objective may include but is not limited to: using the DataGridView (WinForms) or DataGrid (WPF) control to display and update the data contained in a data source, implementing complex data binding to integrate data from multiple sources; ItemsControl-derived controls (WPF)
  • Create a data template in WPF. This objective may include but is not limited to: implementing a data template selector; using templates with ItemsControl
Enhancing the Functionality and Usability of a Solution (17%)
  • Integrate WinForms and WPF within an application. This objective may include but is not limited to: using ElementHosts within WinForms and ControlHosts within WPF; using the PropertyMap property
  • Implement asynchronous processes and threading. This objective may include but is not limited to: implementing asynchronous programming patterns; marshalling between threads; freezing UI elements; using timers; Task Parallel Library; parallel LINQ; using the dispatcher; BackgroundWorker component
  • Incorporate globalization and localization features. This objective may include but is not limited to: loading resources by locale; marking localizable elements; using culture settings in validators and converters; using language properties and rendering direction properties; working with resource files for localization; determining installed locales; regional settings
  • Implement drag and drop operations within and across applications. This objective does not include: Dynamic Data Exchange (DDE)
  • Implement security features of an application. This objective may include but is not limited to: configuring Software Restriction Policy (SRP); full trust and partially trusted security; interoperability with legacy CAS policy; User Account Control (UAC)
  • Manage user and application settings. This objective may include but is not limited to: creating application settings; creating user settings; loading and saving settings This objective does not include: persisting to database
  • Implement dependency properties. This objective may include but is not limited to: enabling data binding and animation, property metadata, property change callbacks
Stabilizing and Releasing a Solution (17%)
  • Implement a WPF test strategy. This objective may include but is not limited to: automation peer, UI automation, IntelliTrace
  • Debug XAML by using the WPF Visualizer. This objective may include but is not limited to: accessing the Visualizer, drilling down into the visual tree, viewing and changing properties This objective does not include: setting a breakpoint and stepping through code
  • Debug WPF issues by using PresentationTraceSources. This objective may include but is not limited to: animation, data binding, dependency properties
  • Configure a ClickOnce deployment. This objective may include but is not limited to: configuring the installation of a WinForms, WPF, or XBAP application by using ClickOnce technology; choosing appropriate settings to manage upgrades
  • Create and configure a Windows Installer project. This objective may include but is not limited to: configuring a setup project to add icons during setup, setting deployment project properties, configuring conditional installation based on operating system versions, setting appropriate Launch Conditions based on the .NET Framework version, adding custom actions to a setup project, adding error-handling code to a setup project
  • Configure deployment security settings. This objective may include but is not limited to: configuring and integrating UAC by using ClickOnce deployments; setting appropriate security permissions to deploy the application

Got a lot to do.

NNNN