About this course
In this course, experienced developers who know the basics of Windows Forms development gain more advanced Windows Client design and development skills. WinForms and WPF programming models, as well as relative strengths and when to use each technology, are covered.
Audience profile
This course is intended for Technology Specialists in the area of Windows Client Development who work in a development environment that uses Microsoft Visual Studio .NET 2010 and Microsoft .NET Framework 4.0 to create rich client applications for Windows.
Prerequisites
Before attending this course, students must have:
- An understanding of the problem-solving techniques that apply to software development
- A general understanding of the purpose, function, and features of .NET Framework
- Experience using Visual Studio
- Experience in object oriented design and development
- Experience in N-Tier application design and development
- Implementing basic security best practices in .NET Applications
- Deploying .Net Framework Applications using ClickOnce and the MS Installer
Module 1: Windows Client Application Design The goal of this module is to ensure that students understand how varying business requirements influence the design decisions when planning a Windows Client application. Students will learn how design requirements, specifications, and business goals affect the choice between WPF and Windows Forms when updating (or planning a new) Windows Client application.Lessons
- Windows Client Technologies
- Architectural Patterns
- Interoperability between Windows Forms and WPF
Lab : Planning Windows Client Applications
- Choose appropriate Windows client technologies
- Choose appropriate architectural patterns
- Identify areas for migration from WinForms
- Identify areas for interoperability between WinForms and WPF
Module 2: Introduction to Visual Studio 2010 and WPF Version 4 The goal of this module is to introduce students to the new features that Visual Studio 2010 and WPF version 4 provideLessons
- What’s New in Visual Studio 2010?
- What’s New in WPF Version 4
Lab : Guided Tour of Visual Studio 2010 and XAML
- Use new features in Visual Studio 2010
- Use new features in WPF version 4
Module 3: Designing and Developing a User Interface
Lessons
- Defining Page Layout
- Using Content Controls
- Using Item Controls
- Sharing Logical Resources in a Window
Lab : Building a User Interface
- Define page layout
- Use content controls
- Use item controls
- Share resources within a window or user control
Module 4: Taking Control of the User Interface
Lessons
- Sharing Logical Resources in an Application
- Creating Consistent User Interfaces by Using Styles
- Changing the Appearance of Controls by Using Templates
- Handling Events and Commands
Lab : Dynamically Controlling the User Interface
- Share logical resources throughout an application
- Create a consistent user interface by using styles
- Change the appearance of controls by using templates
- Handle events and commands
Module 5: Testing, Unit Testing, and Debugging
Lessons
- WPF Testing Strategies
- Debugging XAML
- Providing User Feedback for Unhandled Exceptions
- Understanding Security Features
Lab : Testing and Debugging WPF Applications
- Implement a WPF unit test strategy
- Debug XAML by using the WPF Visualizer and PresentationTraceSources
- Provide user feedback for unhandled exceptions
- Understand security features of an application
Module 6: Simple Data Binding and Validation The goal of this module is to teach the student how to implement simple data binding and data validation in order to manage data in a data source (CRUD). In addition to learning how to bind a value to a UI element, the student should learn best practices concerning when to use the various implementations of data binding and how to connect to a data source with LINQ.Lessons
- Overview of Data Binding
- Creating a Data Binding
- Implementing Property Change Notification
- Converting Data
- Validating Data
- Presenting Data at Design Time
Lab : Data Binding
- Explain WPF data binding concepts and terminology
- Create a binding between a data source and a control
- Implement property change notification
- Convert data between the binding source and the binding target
- Validate data entered by the user
- Present data at design time
Module 7: Data Binding to Collections The goal of this module is to enable the student to implement more advanced data binding scenarios, picking up where the previous module on data binding left off. The student will learn how to bind to ListView, GridView, DataGrid, and other collection classes.Lessons
- Binding to Collections of Objects
- Using Collection Views
- Creating Master-Detail User Interfaces
- Using Data Templates
- Presenting Design Time Data Collections
Lab : Data Binding to Collections
- Bind to a collection of objects
- Sort, filter, and group collections by using collection views
- Create master-detail user interfaces
- Customize data display by using data templates
- Present data collections at design time
Module 8: Enhancing UI Responsiveness The goal of this module is to teach the students how coding techniques can be used to improve the responsiveness of their applications.Lessons
- Implementing Asynchronous Processes
- Implementing Responsive User Interfaces
Lab : Enhancing Application Performance
- Implement asynchronous processes
- Implement responsive user interfaces
Module 9: Integrating Localization and User Assistance FeaturesThe goal of this module is to teach students how to implement localization, user assistance, and accessibility features within an application. Lessons
- Localization and Globalization
- Implementing User Assistance Features
- Providing User Accessibility Features
Lab : Localizing a WPF Application
- Describe WPF localization and globalization features
- Implement localized WPF applications
- Implement user assistance features
- Provide user accessibility features
Module 10: WPF 2D Graphics, Multimedia, and Printing The goal of this module is to teach the students the basics of graphics in WPF. The module will also provide an overview of multimedia (audio and video).Lessons
- Displaying 2D Graphics
- Displaying Images
- Adding Multimedia to WPF Applications
- Creating and Printing Documents
Lab : Drawing 2-D Graphics
- Display 2D graphics
- Add images in a WPF application
- Add multimedia content to a WPF application
- Create and print documents
Module 11: Control Customization The goal of this module is to teach students how to customize controls and introduce students to custom controls.Lessons
- Overview of Control Authoring
- Creating User Controls
- Creating Custom Controls
- Managing Control Appearance by Using Visual States
- Integrating WPF and Windows Forms
Lab : Building a User Control
- Explain scenarios and options for creating new controls
- Create user controls
- Create custom controls
- Integrate WPF and WinForms controls
Module 12: Attached Properties and Behaviors in WPF The goal of this module is to teach the students how to implement application behaviors based on user actions or application events by using attached properties and Expression Blend behaviors.Lessons
- Implementing Attached Properties
- Implementing Drag-and-Drop User Interfaces
- Implementing Expression Blend Behaviors, Triggers and Actions
Lab : Implementing Drag-and-Drop Operations
- Describe WPF attached properties
- Implement drag and drop
- Implement Expression Blend behaviors
Module 13: Animations in WPF The goal of this module is to teach the student how to implement animations and to teach students how to develop data visualization within their applications in a manner that enables the application user to drill down into data visually. Students should also learn when animations should be used and why.Lessons
- Using Animations
- Using Triggers
- Implementing Data Visualizations
Lab : Creating Animations
- Explain when animations are appropriate for the user interface
- Implement animation in WPF
- Initiate animation by using triggers
- Present data visualizations by using WPF
Module 14: Application State, Settings, and Lifecycle
Lessons
- Creating Application Settings
- Consuming Application Settings
- Creating Custom Configuration Sections
Lab : Creating a Settings Dialog
- Persist user and application settings
- Consume user settings
Module 15: Configure and Deploy Windows Client Applications The goal of this module is to teach students how to deploy their applications using the various methods supported by Visual Studio 2010.Lessons
- Deployment Options
- Deploying a Standalone WPF Application
- Deploying an XBAP Application
- Configuring Security Settings
Lab : Deploying Applications
- Explain deployment options
- Deploy a standalone WPF application by using a Setup and Deployment project
- Deploy a ClickOnce application
- Configure security settings
10262
Binding
- Introduction to WPF data binding – The complete WPF tutorial
- WPF Data Binding – Part 1 – CodeProject
- c# – Binding query to datagrid with WPF and Entity Framework – Stack Overflow
Inversion of Control
- Inversion of Control – An Introduction with Examples in .NET
- Inversion of Control and Dependency Injection Working with Windsor Container
Localization
Misc
- Ease-In Examples
- UI Automation Control Patterns Overview
- Geometry Overview
- Display a PDF in WPF Application – Stack Overflow
- Change .config File at Runtime C# Code – CodeProject
- How do I (update/insert/remove) the config file during runtime?
Q/A
Reference
WPF
- WPF Architecture
- What’s New in WPF Version 4.5
- WPF: Versions, History and Major Enhancements – CodeProject
- wpf_tutorial.pdf
- Windows WPF Printing Overview sample in C# for Visual Studio 2010
WPF High DPI Info
- wpf high dpi – Google Search
- DPI | 2,000 Things You Should Know About WPF
- High DPI Scaling Improvements for Desktop Applications and “Mixed Mode” DPI Scaling in the Windows 10 Anniversary Update | Building Apps for Windows
- Programming Ponderings: Making DPI-Aware Applications in .NET
- Developing a Per-Monitor DPI-Aware WPF Application (Windows)
- Writing DPI-Aware Desktop and Win32 Applications (Windows)
- update your applications to be per monitor-DPI aware – Google Search
- Tutorial: Writing High-DPI Win32 Applications (Windows)
- c# – WPF Application Blurry on High DPI Screen on Windows 10 – Stack Overflow
- WPF high dpi issues – Stack Overflow
- How can I get the DPI in WPF? – Stack Overflow
- Windows Per-Monitor Aware WPF Sample in C#, C++ for Visual Studio 2013
- scaling – Disable DPI awareness for WPF application – Stack Overflow
WPF Proportional Fonts
- IllustratedWPF.pdf
- wpf-4-unleashed.pdf
- wpf proportional font size – Google Search
- WPF TextBlock font resize to fill available space in a Grid – Stack Overflow
- wpf – How to automatically scale font size for a group of controls? – Stack Overflow
- c# – WPF adjust font size to window ratio – Stack Overflow
- c# – WPF chart controls – Stack Overflow