Tim Huckaby CEO, InterKnowlogy Microsoft RD & MVP Jump into WPF!
2 Abstract: You’ve seen the beautiful animated user interfaces; you have seen the gratuitous animations; you’ve seen the 3D. You might not be doing it now, but you will eventually – you’ll be building rich client applications in WPF. It’s just a matter of time. This session was designed as an introduction to WPF to get you over the big learning curve that has frustrated many and well on your way to building great applications in WPF. In this session, you’ll learn how to use Visual Studio to help build WPF applications, of course. But you’ll also learn about a number of tools you’ll use to build WPF applications. This is a rare place in the.NET stack where VS doesn’t do it all. In fact, it doesn’t even come close. So we’ll show you tools like those from the Expression Suite, along with some XAML design, syntax and rendering tools. WPF is manifested in three major application platforms (Windows Client, Silverlight, and Microsoft Surface) and all will be covered in this session at some level.
About… InterKnowlogy ( Tim Huckaby, CEO – Custom Application Development / Consulting / Software & Systems Engineering Firm headquartered in Carlsbad, CA – Design, Architect, Build and Deploy Enterprise Class Applications – Industry Experts: Most of the employees are published, MVPs, RD, Speakers, etc. Microsoft.NET Application development since 2000 Microsoft.NET Rich Client Pioneers / Industry Leaders Microsoft Touch Application Development Leaders (Surface / Windows 7 / Silverlight 3) Information Worker Solutions (VSTO & SharePoint) Integration / Messaging, B2B / B2C, Wireless / Mobility Leading Edge: Surface, WPF, Silverlight, Win7 touch, SharePoint, VSTO Cutting Edge Solutions on emerging Microsoft technologies Largest Client: Microsoft
Demo of the Reference Application WPF, XAML, and Declarative Programming Layout and Controls, Events and Commands Working with Data Session Objectives And Agenda Adding Style To Your Application
DEMO Project Structure XAML and Code Behind Working with Data Resources
WPF and Declarative Programming XAML replaces code Attributes control Layout and Style Event handlers wired-up in XAML Declarative Data Binding
Sample XAML Runs in a WPF Application: Runs in the Browser: :
Layout and Controls Layout Basics Controls
Layout Basics Panels UI Element Positioning
Panels StackPanel Arranges child elements into a single line that can be oriented horizontally or vertically. WrapPanel Positions child elements in sequential position from left to right, breaking content to the next line at the edge of the containing box. DockPanel An area where you can arrange child elements either horizontally or vertically, relative to each other. Grid A flexible grid area that consists of columns and rows. Canvas An area within which you can explicitly position child elements by using coordinates that are relative to the Canvas area.
Container Controls Canvas DockPanel DocumentViewer Frame Grid StackPanel Tab
Positioning Horizontal and Vertical Alignment Margin Padding Margin Text Block Padding
Controls Standard Common Controls Menu and Toolbar Controls Container Controls New Controls
Standard Common Controls TextBox Button CheckBox / ComboBox Image Label ListBox Password
Menu and Toolbar Controls Menu Context Menu StatusBar ToolBar ToolBarTray
Controls unique to WPF TextBlock Expander InkCanvas InkPresenter DocumentViewer UniformGrid
DEMO
Events and Commands Standard.NET Events Routed Events Commands
Routed Events Bubbling – Starts at the current element and bubbles up to the current element’s parent and that elements parent and so on [MouseLeftButtonDown] Tunneling – Works opposite of bubbling and starts at the root element and works down to the originating element [PreviewMouseLeftButtonDown] Direct – Works like standard.NET event handling with only direct handlers being notified of events [Click]
Working with Events Halting Events Private void Grid_ButtonDown(object sender, RoutedEventArgs e) { //do something here e.Handled = true; } Determining the Target Private void Grid_ButtonDown(object sender, RoutedEventArgs e) { // who is the originator MessageBox.Show(((Control)e.OriginalSource).Name); }
Commands Logical action that can be invoke in several ways Based on the RoutedCommand Class Uses both event tunneling [PreviewExecuteEvent] and event bubbling [ExecuteEvent]
Standard Command Classes Class Command Types ApplicationCommands Commands common to almost all applications. Includes clipboard commands, undo and redo and document level operations (open,close,print,etc..) ComponentCommands Operations for moving through information such as scroll up and down, move to end, and text selection EditCommands Text editing commands such a bold, italic and alignment MediaCommands Media-playing operations such as transport (play,pause,etc..), volume control and track selection
DEMO
Working with Data Overview Simple Data Binding Complex Data Binding
Data Binding Simple Field level Data Binding Complex Data Binding to multiple controls at a time (Master/Detail/Detail) Client-Side Sorting and Filtering Support for binding to Objects, XML and Relational data sources
Simple Data Binding Simple Data Binding using Business Objects Support for two-way synchronization in simple objects via the INotifyPropertyChanged interface Implicit and Declarative binding via the DataContext
Complex Data Binding Binding to Lists Supports two-way data binding to list if list inherits from ObservableCollection Data Templates Sorting Filtering Master/Detail/Detail
DEMO
Adding Style to Your Application Overview Resources Triggers
XAML Styles What are styles? Problems they address in WinForms 2.0 – Styling controls one at a time – Unnecessary Custom Control Creation Similarities to Cascading Style Sheets – Inline declaration – Page level declaration – Separate file declaration
Overview Cont. Contained in System.Windows.Style Main Properties – Key – TargetType – Setters (Property and Event)
Style Examples
Resources Static Resources – Loaded when Window or Page Loads – Leads to slower page loading – Changes to underlining values are not propagated Dynamic Resources – More overhead to allow for constant updates – Can only be used to set dependency properties – Can potentially improve Page and Window load time
Resource Dictionary Contains hash table of resources Great way to organize resources Resource.MergedDictionaries combines many different file based resources
Triggers Setters that are set based on one or more conditions Three Types of Triggers – Property – Invoked when the value of a dependency property changes – Data – Invoked when the value of a plain.NET property changes – Event – Invoked when a routed event changes
DEMO
Summary Layout in WPF is flexible WPF has a rich set of controls Data Binding is rich & supports many data types Styles bring life to your applications The learning curve can be steep, but is worth it. Download all my resources and dedicate some time to learn.
Where to go next: Windows Client Guidance Microsoft Platform Solution Architecture for the Application Developer by Tim Huckaby The “Anchor Document” to a ton of Rich Client Guidance
WPF: Where to go Next Free Resources WindowsClient.net - this is the official Microsoft community portal for WPF development, and is chock full of great resources WindowsClient.net Windows Client Development Samples, Guidance, FAQs and Blogs - Contains an aggregation of a ton of great stuff on the Windows Client Development platform. Windows Client Development Samples, Guidance, FAQs and Blogs Learn WPF page - this page links to podcasts, labs, and the very popular "how do I?" videos Learn WPF page MIX University's WPF Boot Camp - this is a full 3-day video training course on WPF, in which expert instructors guide you from the surface into the depths of the technology stack MIX University's WPF Boot Camp
Where to go Next: Books Windows Presentation Foundation Unleashed (WPF) by Adam Nathan, Daniel LehenbauerAdam NathanDaniel Lehenbauer Essential Windows Presentation Foundation (WPF) by Chris AndersonChris Anderson
Where to go…soon… Windows Presentation Foundation A Scenario-Based Approach by Billy Hollis “Early April…I hope…” B. Hollis, 12/7/07 “October…” B. Hollis, 6/3/08 “It’s not going to be done in April.” B. Hollis, 2/24/09 “I took a.NET 4.0 dependency. Projected date now Jan 2010, because it can’t come out until VS2010 is released.” B. Hollis, 4/29/09
Where to go next : The InterKnowlogy WPF Reference Application
Tim Huckaby, InterKnowlogy More info on InterKnowlogy: – Contact me: Tim Huckaby – – Phone: – Blog : About Tim Huckaby… – CEO, InterKnowlogy – Microsoft ® Regional Director – Southern California – Microsoft ®.NET Partner Advisory Council Founder / Member – Microsoft ® MVP -.NET – Microsoft ® Surface Partner Advisory Council – INETA Speaker – International.NET Users Group Association – Windows and.NET Magazine Advisory Board Member –.NET Developers Journal Magazine Advisory Board Member – Author / Speaker
InterKnowlogy – Who We Are Focused on Custom AppDev, Collaboration and Infrastructure Technologies Alpha / Beta Deployments Published Authors, Instructors, MS MVPs Client Service Delivery Focus HQ in Carlsbad, CA Worldwide Client Base
InterKnowlogy Technologies of Note Exchange / Active Directory Windows Server SMS System Center Performance Point MOSS 2007 InfoPath.Net 2.0 / 3.0 / 3.5 / 4.0 WPF & XAML WF & WCF Silverlight VSTS / TFS VSTO SQL BizTalk WPF, Silverlight, Surface, Windows 7 Touch
InterKnowlogy - What We Do Best Custom Application Development System Integration Collaboration / Portals Infrastructure Business Intelligence High Level Technical Consulting