Tim Huckaby
CEO, InterKnowlogy
Microsoft RD & MVP
Session Objectives And Agenda
Data Visualization: WPF & XAML…and Silverlight…and Surface…and Windows 7
Touch
Session Objective: To get you excited by showing you “what you can do” so that
you start doing it.
Why you need Rich Client Applications
Rich Client Technology Roadmap & Guidance
Demos, demos, demos!...
About…
InterKnowlogy (www.InterKnowlogy.com)
Tim Huckaby, CEO (TimHuck@InterKnowlogy.com)
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
Microsoft .NET Application development since 2000!
Microsoft .NET Smart Client pioneers / industry leaders
Information Worker Solutions (VSTO & SharePoint)
Integration / Messaging, B2B / B2C, Wireless / Mobility
Leading Edge: Surface, WPF, Silverlight, SharePoint, OBA, Windows 7 Touch
Cutting Edge Solutions on emerging Microsoft technologies
Largest Customer: Microsoft
The Incredible Race Condition:
My Code: 3370
WPF 3D:
The Scripps Research Institute
VitruView
AutoCad - dwfviewer
Tim Huckaby
CEO, InterKnowlogy
Microsoft RD & MVP
What the heck is XAML?
Separates the front-end from the back-end
Simple declarative programming language suitable for
constructing and initializing .NET Objects
Usually the most concise way to represent user
interfaces (or other hierarchies of objects)
Doesn’t need a compile to render
The language that almost all WPF related tools emit
Sample XAML
Runs in a WPF Application:
<Window x:Class="WpfApplication2.Window1“
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid>
<TextBlock>Hello World</TextBlock>
</Grid>
</Window>
Runs in the Browser:
<Canvas
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<TextBlock>Hello World</TextBlock>
</Grid>
</Canvas>
XAML Demo
WPF and Declarative Programming
XAML replaces code
Attributes control Layout and Style
Event handlers wired-up in XAML
Declarative Data Binding
The Big 4 “XAML-based” Technologies
WPF (Windows XP and above)
Silverlight
Surface
WPF 4.0 Touch (Windows 7)
Surface!
Surface:
C-ME
VitruView
Library of Congress
Tim Huckaby
CEO, InterKnowlogy
Microsoft RD & MVP
Lightweight WPF runtime
Interactive experiences for devices,
PC, & Mac platforms (and others…)
Strict subset of Windows Presentation Foundation
Lightweight download (4.2mbs)
Programming model uses XAML + Jscript + WPF
Access to WPF tooling
WPF-based Tools
<XAML>
<Button Width="100px"> OK
<Button.Background>
LightBlue
</Button.Background>
</Button>
</XAML>
•Silverlight
43Things.com & InterKnowlogy Wish 43
Library of Congress
Tim Huckaby
CEO, InterKnowlogy
Microsoft RD & MVP
WPF – how does it work?
Built on Top of Direct 3D
Converted to 3D triangles, textures and other Direct3D
objects & then rendered by hardware
Benefits of hardware acceleration & performance due to
work being off-loaded to GPUs (unlike GDI based systems)
Ensures the maximum benefit of new hardware
and drivers
Software rendering pipeline as fallback
EMN8 & REZN8
WPF
Emn8
from our Marketing VP Madeline Pantalone:
“It's okay for you to use application for
demonstration as long as you are sure to preface it
with the phrase: "This is test data only. Products
you see may have been created for testing purposes
only."
Why WPF?
The GDI & USER subsystems were introduced in
Windows 1.0 in 1985
OpenGL – Early 90s
DirectX – 1995
Goal: Overcome the limits of GDI+ & USER with
the productivity of .NET
WPF Audience Participation Time
1. Does WPF enable me to do something I couldn’t
have done before?
No. Unless you factor in time & money…
And would like to do more with less…
2. Is DirectX dead?
No. It is more applicable to advanced 3D developers writing hard-core “twitch” games.
3. Are Winforms dead?
No. …but it will not be advanced; the last version was 2.0 in .NET 2005.
WPF / Winforms Integration is simple
Windows 98 Supports WinForms
4. Does WPF run better on Vista & Win 7 than on XP?
Yes.
3D objects only get anti-aliasing on Windows Vista or Later
Non-rectangular windows only get hardware acceleration on Vista.
Vista has a driver model that helps with resource contention
5. Does Silverlight trump all this other WPF Stuff?
One would think so with all the marketing dollars that are being thrown at it….
But, in Reality the answer is “No” and it makes solution architecture more important than ever.
Windows 7
Multitouch:
VitruView
TouchPaint
Tim Huckaby
CEO, InterKnowlogy
Microsoft RD & MVP
Surface demos &
Windows 7 Touch, WCF,
Surface Integration
Tim Huckaby
CEO, InterKnowlogy
Microsoft RD & MVP
Peer-to-Peer “Flicking”
Windows 7 WPF & Microsoft Surface
Unified MultiTouch UX
Surface ScatterView
WPF Multi-Touch Manipulations
Simulated Spatial Data Transfer
Duplex WCF web service
Spatial awareness between clients
Transfer annotations, scale, orientation, etc.
WCF Service
Client(s)
WCF Service
Service Host
Client(s)
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 such as the...
Learn WPF page - this page links to podcasts, labs, and
the very popular "how do I?" videos
MIX University's WPF Bootcamp - 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
Where to go next
Windows Presentation Foundation
Unleashed (WPF)
by Adam Nathan, Daniel Lehenbauer
Essential Windows Presentation
Foundation (WPF)
by Chris Anderson
Where to go next
The InterKnowlogy WPF & Silverlight Reference Applications
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…soon…
Windows Client
Guidance
Microsoft Platform
Solution Architecture for
the Application Developer
by Tim
Huckaby
The “anchor
document” to a ton
of Rich Client
Guidance
Tim Huckaby, InterKnowlogy
More info on InterKnowlogy:
www.InterKnowlogy.com
Contact me: Tim Huckaby
E-mail: TimHuck@InterKnowlogy.com
Phone: 760-444-8640
Blog: http://team.interknowlogy.com/blogs/timhuckaby
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
The Incredible Race Condition:
My Code: 3370
Surface:
Craps
Tim Huckaby
CEO, InterKnowlogy
Microsoft RD & MVP
Surface Craps
Background image with interaction layer on top
WPF 3D dice with support for “rolling” by
flicking
BettableArea control to define bet areas and
control chip positioning on the table
Opacity = “0” at runtime, used at design time for layout
ScatterView on top of all to show “on-table
help”
Background = “{x:Null}” allows for contacts to click
through to layers underneath
BettableArea Control
Derives from Canvas
Arranges child controls (“chips”) according to
attached properties that define positioning
<controls:BettableArea x:Name="Pass"
BetType="Pass"
ChipLocation1="{Binding ElementName=Pass_Chips1}"
ChipLocation2="{Binding ElementName=Pass_Chips2}"
>
<Path ... />
<Ellipse x:Name="Pass_Chips1" ... />
<Ellipse x:Name="Pass_Chips2" ... />
...
</controls:BettableArea>
Accepts ContactDown with Byte tag to place a
bet
Position of chip based on ChipLocation and tag ID
BettableArea at Design Time
Path elements define content
area of the bettable area
(“Field”)
Ellipse elements define final
position of chips in a given
area (correlated using
attached property)
BetLogic
Base class with virtual ProcessRollResult( )
Derived classes for each bet region (“Pass”,
“Field”, etc.)
GameTable loops through all BetLogic classes
after each roll to determine outcome
Each overridden ProcessRollResult uses
IsComeOutRoll and LastRoll properties to
determine outcome (Win,Lose,nothing)
Hidden Slides Start Here
All Relevant to the Content
Some had to been hidden / Removed for Political reasons
Hidden Slides End Here
All Relevant to the Content
Some had to been hidden / Removed for Political reasons
Resources
www.microsoft.com/teched
www.microsoft.com/learning
Sessions On-Demand & Community
Microsoft Certification & Training Resources
http://microsoft.com/technet
http://microsoft.com/msdn
Resources for IT Professionals
Resources for Developers
www.microsoft.com/learning
Microsoft Certification and Training Resources
Related Content
Breakout Sessions (session codes and titles)
Interactive Theater Sessions (session codes and titles)
Hands-on Labs (session codes and titles)
Hands-on Labs (session codes and titles)
Track Resources
Resource 1
Resource 2
Resource 3
Resource 4
Complete an
evaluation on
CommNet and
enter to win!
© 2009 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should
not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS,
IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.