Jonathan Russ and Josh Wagoner
IdentityMine, Inc.
User Experience Design and Development

                WPF

           We love software
Real world application design
and development has taught us a lot…

       And we like to share. 
Develop
Design




         Integrate
True Graphics Designer

Microsoft Expression Design, Adobe
  Illustrator, Macromedia Fireworks,
           3D Modeling Too...
Software Engineer

Microsoft Visual Studio 2005

      Owns the code
Part Designer, Part Developer. Coordinator.

Microsoft Expression Blend, Microsoft Visual
                Studio 2005

   ...
Jonathan Russ
  Director of R & D

  4½ years – WPF
 13 years – Software
 18 years – Industry
 26 years – Hobbyist
36 year...
a.k.a., Dynamics Visualization Application
a.k.a., DynaViz
Event handlers keep objects alive

WPF registers a Changed handler for DPs of type Freezable

          Set to null prior ...
There’s Strength in Weakness

  Follow the weak event pattern

      Use weak references
Cache and Re-use Objects
Cache Images
Decode images to their required sizes

   BitmapImage.DecodePixelWidth
   BitmapImage.DecodePixelHeight
Use Commands

           KeyBinding

Best if stored in a common location
Focusability

Focusable Property
IsTabStop Property
Visual Cues

FocusVisualStyle Property
Control Behaviors

     IsMouseOver Property
IsKeyboardFocusWithin Property
Tracking Focus

Snoop FocusManager
ChromelessWindow

ElementSnapshot

  DragAndDrop

   OSChecker

    Zoombox
TreeGraph

      RadialPanel

ForceDirectedRadialPanel

   CommandTextBox

   EditModeTextBlock

      ImageCache
SimpleBinding and EvalBinding
(available in all Blendables™ mixes)
Real Estate Performance Management

Optimize the impact of real estate on
       company performance
Development Workflow

       WPF 3D

Real-world Data Sources
Designers: 1

 Integrators: 1

Developers: 1-2
Designer: Comps. 3D Models.

Integrator: Styles. Templates. 2D Animations. Design
                       Integration.

Dev...
Feature differences between WPF 2D and 3D

Less Designer and Integrator input than other
                WPF projects
Building 3D applications with WPF can be much easier
             than other technologies, but…

                    It's ...
Make sure you have a good understand of 3D concepts
                   and terminology.

If you don't have the knowledge n...
Designers should be familiar with 3D Modeling tools.

               ElectricRain's Zam3D

    Workflow: Export developer ...
Most users are not familiar with navigating 3D UI

Contrained movement to allow users easily acclimate to the
            ...
Input Events… or lack thereof

      Hit Testing in 3D
ModelVisual3D is the most functional class in 3D

       Most similar to the 2D Visual class

No support for Styles, Templ...
3D models do not raise events as 2D controls do

      No MouseEnter, No MouseExit, No
           MouseButtonDown, etc.
A UIElement is needed to raise input events. This could be
      the Viewport3D itself or an element on top of the
       ...
We created a hit manager class that handles all hit testing

    Hit manager dispatches events to the models hit

 Now we ...
Data in the Accruent application cried out for ItemsControl
                       functionality.

List of data objects ar...
Building a data bound video carousel
entirely in markup.
3DTools project on codeplex.com

   Source released by Microsoft with controls enabling
               interactive 2D cont...
Avoid TileBrushes whenever possible in your 3D scene

When a model with a TileBrush in its material is not visible
       ...
Real world data sources can be slow

Waiting on data can freeze ambient animations and result
                 in a poor u...
Dispatcher.Invoke

            Dispatcher.BeginInvoke

Do processing on background threads and update
             depende...
© 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be...
Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation
Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation
Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation
Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation
Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation
Upcoming SlideShare
Loading in …5
×

Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation

1,234 views

Published on

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 team

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,234
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
43
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation

  1. 1. Jonathan Russ and Josh Wagoner IdentityMine, Inc.
  2. 2. User Experience Design and Development WPF We love software
  3. 3. Real world application design and development has taught us a lot… And we like to share. 
  4. 4. Develop Design Integrate
  5. 5. True Graphics Designer Microsoft Expression Design, Adobe Illustrator, Macromedia Fireworks, 3D Modeling Tools Owns the design assets
  6. 6. Software Engineer Microsoft Visual Studio 2005 Owns the code
  7. 7. Part Designer, Part Developer. Coordinator. Microsoft Expression Blend, Microsoft Visual Studio 2005 Owns the XAML
  8. 8. Jonathan Russ Director of R & D 4½ years – WPF 13 years – Software 18 years – Industry 26 years – Hobbyist 36 years – Coexisting
  9. 9. a.k.a., Dynamics Visualization Application a.k.a., DynaViz
  10. 10. 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;
  11. 11. There’s Strength in Weakness Follow the weak event pattern Use weak references
  12. 12. Cache and Re-use Objects
  13. 13. Cache Images
  14. 14. Decode images to their required sizes BitmapImage.DecodePixelWidth BitmapImage.DecodePixelHeight
  15. 15. Use Commands KeyBinding Best if stored in a common location
  16. 16. Focusability Focusable Property IsTabStop Property
  17. 17. Visual Cues FocusVisualStyle Property
  18. 18. Control Behaviors IsMouseOver Property IsKeyboardFocusWithin Property
  19. 19. Tracking Focus Snoop FocusManager
  20. 20. ChromelessWindow ElementSnapshot DragAndDrop OSChecker Zoombox
  21. 21. TreeGraph RadialPanel ForceDirectedRadialPanel CommandTextBox EditModeTextBlock ImageCache
  22. 22. SimpleBinding and EvalBinding (available in all Blendables™ mixes)
  23. 23. Real Estate Performance Management Optimize the impact of real estate on company performance
  24. 24. Development Workflow WPF 3D Real-world Data Sources
  25. 25. Designers: 1 Integrators: 1 Developers: 1-2
  26. 26. Designer: Comps. 3D Models. Integrator: Styles. Templates. 2D Animations. Design Integration. Developer: Controls. 3D Interaction Code. Intergration of Data Services. Code Behinds.
  27. 27. Feature differences between WPF 2D and 3D Less Designer and Integrator input than other WPF projects
  28. 28. Building 3D applications with WPF can be much easier than other technologies, but… It's still hard.
  29. 29. 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. 
  30. 30. Designers should be familiar with 3D Modeling tools. ElectricRain's Zam3D Workflow: Export developer friendly models.
  31. 31. 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
  32. 32. Input Events… or lack thereof Hit Testing in 3D
  33. 33. ModelVisual3D is the most functional class in 3D Most similar to the 2D Visual class No support for Styles, Templates, Routed Events.
  34. 34. 3D models do not raise events as 2D controls do No MouseEnter, No MouseExit, No MouseButtonDown, etc.
  35. 35. 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
  36. 36. 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
  37. 37. 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
  38. 38. Building a data bound video carousel entirely in markup.
  39. 39. 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
  40. 40. 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
  41. 41. Real world data sources can be slow Waiting on data can freeze ambient animations and result in a poor user experience
  42. 42. Dispatcher.Invoke Dispatcher.BeginInvoke Do processing on background threads and update dependency properties
  43. 43. © 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.

×