Developing Windows applications using C# and WPF
This 5 day course covers the C# language and its use for Windows desktop applications using the Windows Presentation Foundation (WPF). Developing for WPF is interesting as it actually uses 2 languages simultaneously - C# for the functionality and XAML for the UI design. A shorter course can be provided if you are already familiar with C#, and several optional modules can be added to match your particular requirements.
The 5 day course costs £3200 in total for up to 6 students, plus VAT and the instructor's reasonable expenses. Each student beyond 6 would cost £25 for the additional course materials. If you are interested in this course, please contact us by email at email@example.com or by phone on +44 (0)1285 713297.
Introducing C# and .Net
Layout and white space. Blocks, braces and semicolons. Classes, methods and the use of '.'. The Main method. Basic input and output. Compiling and running programs.
Introduction to WPF
What WPF is for. XAML. The technologies. The tools. Patterns and Model-View-ViewModel. WPF vs Windows Store Apps.
Designing a user interface with XAML
What XAML is. XAML details. Designing a window. Basic controls. Properties and attached properties. Panels and layouts. Code-behind and simple events.
Variable types and sizes. Integer versus floating point. Local variables and scope. Declaring and initializing variables. Operators. Pre and post increment operators. Strings and characters. Special characters and escape sequences. Verbatim literal strings.
if and else. The for loop. while and do while. The switch statement. Conditional expressions. Writing and calling methods. Passing arguments by value, ref and out. Returning values. Method overloading.
Object Oriented Programming
Data types and nullable types. Value and reference types. Implicit types. Classes, objects and the use of 'new'. Encapsulation. The heap and the stack. Strings and StringBuilders. Collections, generics and concurrency. Arrays, jagged arrays and Indexers. Namespaces, 'using' and assemblies. Attributes.
Inheritance and the use of 'virtual' and 'override'. Benefits of inheritance. Hiding and the other use of 'new'. Abstract classes. Constructors and initialization. Casting, 'as' and 'is'.
The benefits of interfaces. Interfaces vs classes. Defining and implementing an interface. Common interfaces and the ubiquitous IEnumerable. Sorting and finding.
How exception handling works. try...catch and throw. Handling multiple exception types. try...finally and 'using'. Deriving exception classes.
Files, Streams and Networking
The. Net Stream architecture. Streams, Readers and Writers. Serialization and SOAP. The Socket and Tcp classes. Basic network communication. Clients and multithreaded servers.
The event architecture. Event bubbling and routed events. Tunnelling and preview events. Commands.
Containers and layouts
Panels. Canvas and absolute positioning. Wrap and Stack Panels. Margins, sizes and alignment. DockPanel. Grid and UniformGrid. Splitting and scrolling. Viewbox. Controls as containers.
WPF styles and controls
User controls. How WPF controls work. Drawing and presentation. Resources and resource dictionaries. Defining and using styles. Dynamic resources. Control templates. Triggers and animation.
'Built-in' commands. Binding to commands. Application defined commands. Using Prism and DelegateCommand. Using MVVM Light and RelayCommand.
Connecting controls. Binding to objects. Binding modes. Syntax alternatives. Using data contexts. Events and updating. Property change notifications. Observable and binding collections. Data templates. Formatting. Using Prism and BindableBase.
Data grids and column design. Items controls and lists. Enhancing data templates. Value converters. XAML namespaces and object creation. Binding multiple properties. Validation and error handling. Custom validation rules.
Model View View-Model (MVVM)
The architecture. Separating the View and the View Model. Creating the ViewModel from XAML. View first and View Model first. Views and data templates. Selection controls and enums. Dialogs. Using Multiple View/ViewModels. Building flexible user interfaces using user controls and regions. Application controllers and singletons.
LINQ and databases
Binding to data. Databases and POCOs. Using Entity Framework. Using LINQ in general programming. LINQ, binding and data. Hierarchy and relationships. Hierarchical data templates.
async and await. Parallel execution. Parallel For and ForEach. Tasks, threads and the thread pool. Controlling and synchronizing tasks and threads. .Net 4 synchronization mechanisms. Monitors. Asynchronous methods in .Net. Using callbacks. Cross-thread calls and the user interface.
Using Windows Forms
Using Windows Forms from WPF. Using WPF from Windows Forms. Compatibility considerations. Integrating existing application code.
Shapes and colours. Designing a visually interesting user interface. Creating graphics dynamically. Bitmaps and images.
Optional - Introducing the 3rd dimension
Coordinate systems and geometry. The ubiquitous triangle. Cameras and lighting. Models, meshes and materials. Building shapes. Practical examples.
Advanced Language Features
Optional and named parameters. Multiple return values using value tuples. Extension methods. Structs. Delegates. Anonymous methods and lambda expressions. Memory management and the workings of the garbage collector. Calling legacy and unmanaged code. Using unsafe code. The Marshal and IntPtr types. Operator overloading and indexers.