lessons learned: designer/developer productivity in windows presentation foundation
DESCRIPTION
Join the IdentityMine team for an in-depth discussion around lessons learned on Windows Presentation Foundation (WPF) designer/developer workflow and productivity. They look at several real world WPF applications they have built and show you how to help maximize productivity across the entire team from Graphic Designer to Interactive Designer to Developer. Also, get a sneak peek at several of IdentityMine's forthcoming Blendablesâ„¢ Brand WPF Control products and take the opportunity to participate in an open Q&A session with the teamTRANSCRIPT
![Page 1: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/1.jpg)
![Page 2: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/2.jpg)
Lessons Learned: Designer/Developer Productivity in Windows Presentation FoundationJonathan Russ and Josh WagonerIdentityMine, Inc.
![Page 3: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/3.jpg)
IdentityMineWho are we?
User Experience Design and Development
WPF
We love software
![Page 4: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/4.jpg)
IdentityMineWhat have we done?
![Page 5: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/5.jpg)
Lessons Learned
Real world application design and development has taught us a lot…
And we like to share.
![Page 6: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/6.jpg)
Workflow
Design Develop
Integrate
![Page 7: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/7.jpg)
Designer
True Graphics Designer
Microsoft Expression Design, Adobe Illustrator, Macromedia Fireworks, 3D Modeling Tools
Owns the design assets
![Page 8: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/8.jpg)
Developer
Software Engineer
Microsoft Visual Studio 2005
Owns the code
![Page 9: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/9.jpg)
Integrator
Part Designer, Part Developer. Coordinator.
Microsoft Expression Blend, Microsoft Visual Studio 2005
Owns the XAML
![Page 10: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/10.jpg)
The DynaViz App
Jonathan RussDirector of R & D
4½ years – WPF 13 years – Software18 years – Industry26 years – Hobbyist
36 years – Coexisting
![Page 11: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/11.jpg)
Microsoft Dynamics Sure Step Business Modeler
demo
a.k.a., Dynamics Visualization Applicationa.k.a., DynaViz
![Page 12: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/12.jpg)
Object Lifetime
Event handlers keep objects alive
WPF registers a Changed handler for DPs of type Freezable
Set to null prior to releasing the object
MyRect.Fill = null;
MyRect = null;
![Page 13: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/13.jpg)
Object Lifetime (continued…)
There’s Strength in Weakness
Follow the weak event pattern
Use weak references
![Page 14: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/14.jpg)
Object Lifetime (still living…)
Cache and Re-use Objects
![Page 15: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/15.jpg)
Working with Images
Cache Images
![Page 16: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/16.jpg)
Working with Images (continued…)
Decode images to their required sizes
BitmapImage.DecodePixelWidth BitmapImage.DecodePixelHeight
![Page 17: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/17.jpg)
Keyboard Access
Use Commands
KeyBinding
Best if stored in a common location
![Page 18: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/18.jpg)
Keyboard Navigation
Focusability
Focusable PropertyIsTabStop Property
![Page 19: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/19.jpg)
Keyboard Navigation (continued…)
Visual Cues
FocusVisualStyle Property
![Page 20: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/20.jpg)
Keyboard Navigation (continued…)
Control Behaviors
IsMouseOver PropertyIsKeyboardFocusWithin Property
![Page 21: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/21.jpg)
Keyboard Navigation (continued…)
Tracking Focus
Snoop FocusManager
![Page 22: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/22.jpg)
Blendables™ in DynaViz(from the Essentials Mix)
ChromelessWindow
ElementSnapshot
DragAndDrop
OSChecker
Zoombox
![Page 23: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/23.jpg)
Blendables™ in DynaViz(from future mixes)
TreeGraph
RadialPanel
ForceDirectedRadialPanel
CommandTextBox
EditModeTextBlock
ImageCache
![Page 24: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/24.jpg)
Taking XAML Farther
demo
SimpleBinding and EvalBinding(available in all Blendables™ mixes)
![Page 25: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/25.jpg)
Accruent Data Visualization
Real Estate Performance Management
Optimize the impact of real estate on company performance
![Page 26: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/26.jpg)
Accruent
demo
![Page 27: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/27.jpg)
Areas of Interest
Development Workflow
WPF 3D
Real-world Data Sources
![Page 28: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/28.jpg)
Team
Designers: 1
Integrators: 1
Developers: 1-2
![Page 29: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/29.jpg)
Workflow
Designer: Comps. 3D Models.
Integrator: Styles. Templates. 2D Animations. Design Integration.
Developer: Controls. 3D Interaction Code. Intergration of Data Services. Code Behinds.
![Page 30: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/30.jpg)
Workflow Challanges
Feature differences between WPF 2D and 3D
Less Designer and Integrator input than other WPF projects
![Page 31: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/31.jpg)
WPF 3D
Building 3D applications with WPF can be much easier than other technologies, but…
It's still hard.
![Page 32: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/32.jpg)
Developers: Understand 3D
Make sure you have a good understand of 3D concepts and terminology.
If you don't have the knowledge now, don't be afraid of 3D. Read a book.
![Page 33: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/33.jpg)
Designers and 3D
Designers should be familiar with 3D Modeling tools.
ElectricRain's Zam3D
Workflow: Export developer friendly models.
![Page 34: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/34.jpg)
Users and 3D
Most users are not familiar with navigating 3D UI
Contrained movement to allow users easily acclimate to the environment
2D UI to allow user to control 3D world
![Page 35: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/35.jpg)
Developing 3D Interaction
Input Events… or lack thereof
Hit Testing in 3D
![Page 36: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/36.jpg)
ModelVisual3D
ModelVisual3D is the most functional class in 3D
Most similar to the 2D Visual class
No support for Styles, Templates, Routed Events.
![Page 37: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/37.jpg)
Input Events
3D models do not raise events as 2D controls do
No MouseEnter, No MouseExit, No MouseButtonDown, etc.
![Page 38: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/38.jpg)
Hit testing in 3D
A UIElement is needed to raise input events. This could be the Viewport3D itself or an element on
top of the Viewport3D
VisualTreeHelper provides support for hit testing into 3D
Models intersected by hit test are returned
![Page 39: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/39.jpg)
Improving Hit Testing Dev Experience
We created a hit manager class that handles all hit testing
Hit manager dispatches events to the models hit
Now we could add event handlers directly to the models when the model is added to scene for a more productive and consistent development
model
![Page 40: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/40.jpg)
No ItemsControl in 3D
Data in the Accruent application cried out for ItemsControl functionality.
List of data objects are returned from most service calls.
We leveraged the Blendables™ Brand ItemsContainer3D and Carousel3D controls
![Page 41: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/41.jpg)
Carousel3D
demo
Building a data bound video carousel entirely in markup.
![Page 42: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/42.jpg)
2D on 3D
3DTools project on codeplex.com
Source released by Microsoft with controls enabling interactive 2D content on 3D
The Interactive3DDecorator is the control that sits on top of the Viewport3D in the Accruent
application
![Page 43: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/43.jpg)
Performance
Avoid TileBrushes whenever possible in your 3D scene
When a model with a TileBrush in its material is not visible remove it form the scene
RenderOptions.CachingHint attached property
![Page 44: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/44.jpg)
Data
Real world data sources can be slow
Waiting on data can freeze ambient animations and result in a poor user experience
![Page 45: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/45.jpg)
Dispatcher
Dispatcher.Invoke
Dispatcher.BeginInvoke
Do processing on background threads and update dependency properties
![Page 46: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/46.jpg)
IdentityMine Team
Q & A
![Page 47: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/47.jpg)
Please fill out your eval
evaluation
![Page 48: Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation](https://reader037.vdocuments.net/reader037/viewer/2022102711/556d46e1d8b42a94198b46d0/html5/thumbnails/48.jpg)
© 2007 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.