SlideShare uma empresa Scribd logo
1 de 48
Baixar para ler offline
Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation
Jonathan Russ and Josh Wagoner
IdentityMine, Inc.
User Experience Design and Development

                WPF

           We love software
Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation
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 Tools

      Owns the design assets
Software Engineer

Microsoft Visual Studio 2005

      Owns the code
Part Designer, Part Developer. Coordinator.

Microsoft Expression Blend, Microsoft Visual
                Studio 2005

             Owns the XAML
Jonathan Russ
  Director of R & D

  4½ years – WPF
 13 years – Software
 18 years – Industry
 26 years – Hobbyist
36 years – Coexisting
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 to releasing the object

                MyRect.Fill = null;
                MyRect = null;
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
Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation
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.

Developer: Controls. 3D Interaction Code. Intergration
           of Data Services. Code Behinds.
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 still hard.
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. 
Designers should be familiar with 3D Modeling tools.

               ElectricRain's Zam3D

    Workflow: Export developer friendly models.
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
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, Templates, Routed Events.
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
                        Viewport3D

 VisualTreeHelper provides support for hit testing into 3D

        Models intersected by hit test are returned
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
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
Building a data bound video carousel
entirely in markup.
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
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
Real world data sources can be slow

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

            Dispatcher.BeginInvoke

Do processing on background threads and update
             dependency properties
Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation
Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation
© 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.

Mais conteúdo relacionado

Destaque

The Holy Season of Lent
The Holy Season of LentThe Holy Season of Lent
The Holy Season of Lentgoodfriday
 
How Razorfish Lights Up Brand with Microsoft SharePoint
How Razorfish Lights Up Brand with Microsoft SharePointHow Razorfish Lights Up Brand with Microsoft SharePoint
How Razorfish Lights Up Brand with Microsoft SharePointgoodfriday
 
Easter Sunday :: op-stjoseph.org
Easter Sunday :: op-stjoseph.orgEaster Sunday :: op-stjoseph.org
Easter Sunday :: op-stjoseph.orggoodfriday
 
Developing Interactive Applications Using Windows Live Robots, Activities, an...
Developing Interactive Applications Using Windows Live Robots, Activities, an...Developing Interactive Applications Using Windows Live Robots, Activities, an...
Developing Interactive Applications Using Windows Live Robots, Activities, an...goodfriday
 
Opening up Windows Live Data
Opening up Windows Live DataOpening up Windows Live Data
Opening up Windows Live Datagoodfriday
 
Sketch Flow: From Concept to Production
Sketch Flow: From Concept to ProductionSketch Flow: From Concept to Production
Sketch Flow: From Concept to Productiongoodfriday
 
Front-Ending the Web with Microsoft Office
Front-Ending the Web with Microsoft OfficeFront-Ending the Web with Microsoft Office
Front-Ending the Web with Microsoft Officegoodfriday
 
Windows Presentation Foundation: The Opportunity for WPF Applications in the …
Windows Presentation Foundation: The Opportunity for WPF Applications in the …Windows Presentation Foundation: The Opportunity for WPF Applications in the …
Windows Presentation Foundation: The Opportunity for WPF Applications in the …goodfriday
 
Yahoo! On Microsoft .NET 3.0 and Microsoft Expression
Yahoo! On Microsoft .NET 3.0 and Microsoft ExpressionYahoo! On Microsoft .NET 3.0 and Microsoft Expression
Yahoo! On Microsoft .NET 3.0 and Microsoft Expressiongoodfriday
 
History of Good Friday
History of Good FridayHistory of Good Friday
History of Good Fridaygoodfriday
 
12 passos para ser relevante em um mundo mutante
12 passos para ser relevante em um mundo mutante12 passos para ser relevante em um mundo mutante
12 passos para ser relevante em um mundo mutanteAlvaro Nassaralla
 
Proyecto minerva (1)
Proyecto minerva (1)Proyecto minerva (1)
Proyecto minerva (1)equipo 6
 
Plume d'y voir n° 3 année 2015 2016
Plume d'y voir n° 3 année 2015 2016Plume d'y voir n° 3 année 2015 2016
Plume d'y voir n° 3 année 2015 2016Roland Garros
 
7 геогр пестушко_уварова_2015_укр
7 геогр пестушко_уварова_2015_укр7 геогр пестушко_уварова_2015_укр
7 геогр пестушко_уварова_2015_укрAira_Roo
 

Destaque (17)

The Holy Season of Lent
The Holy Season of LentThe Holy Season of Lent
The Holy Season of Lent
 
How Razorfish Lights Up Brand with Microsoft SharePoint
How Razorfish Lights Up Brand with Microsoft SharePointHow Razorfish Lights Up Brand with Microsoft SharePoint
How Razorfish Lights Up Brand with Microsoft SharePoint
 
Easter Sunday :: op-stjoseph.org
Easter Sunday :: op-stjoseph.orgEaster Sunday :: op-stjoseph.org
Easter Sunday :: op-stjoseph.org
 
Developing Interactive Applications Using Windows Live Robots, Activities, an...
Developing Interactive Applications Using Windows Live Robots, Activities, an...Developing Interactive Applications Using Windows Live Robots, Activities, an...
Developing Interactive Applications Using Windows Live Robots, Activities, an...
 
Opening up Windows Live Data
Opening up Windows Live DataOpening up Windows Live Data
Opening up Windows Live Data
 
Keynote I
Keynote IKeynote I
Keynote I
 
Sketch Flow: From Concept to Production
Sketch Flow: From Concept to ProductionSketch Flow: From Concept to Production
Sketch Flow: From Concept to Production
 
Front-Ending the Web with Microsoft Office
Front-Ending the Web with Microsoft OfficeFront-Ending the Web with Microsoft Office
Front-Ending the Web with Microsoft Office
 
Windows Presentation Foundation: The Opportunity for WPF Applications in the …
Windows Presentation Foundation: The Opportunity for WPF Applications in the …Windows Presentation Foundation: The Opportunity for WPF Applications in the …
Windows Presentation Foundation: The Opportunity for WPF Applications in the …
 
Yahoo! On Microsoft .NET 3.0 and Microsoft Expression
Yahoo! On Microsoft .NET 3.0 and Microsoft ExpressionYahoo! On Microsoft .NET 3.0 and Microsoft Expression
Yahoo! On Microsoft .NET 3.0 and Microsoft Expression
 
History of Good Friday
History of Good FridayHistory of Good Friday
History of Good Friday
 
Seleção EJFGV
Seleção EJFGVSeleção EJFGV
Seleção EJFGV
 
12 passos para ser relevante em um mundo mutante
12 passos para ser relevante em um mundo mutante12 passos para ser relevante em um mundo mutante
12 passos para ser relevante em um mundo mutante
 
Proyecto minerva (1)
Proyecto minerva (1)Proyecto minerva (1)
Proyecto minerva (1)
 
Plume d'y voir n° 3 année 2015 2016
Plume d'y voir n° 3 année 2015 2016Plume d'y voir n° 3 année 2015 2016
Plume d'y voir n° 3 année 2015 2016
 
7 геогр пестушко_уварова_2015_укр
7 геогр пестушко_уварова_2015_укр7 геогр пестушко_уварова_2015_укр
7 геогр пестушко_уварова_2015_укр
 
Interfaz scratch
Interfaz scratchInterfaz scratch
Interfaz scratch
 

Semelhante a Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation

Sx sw speaker proposal slides
Sx sw speaker proposal slidesSx sw speaker proposal slides
Sx sw speaker proposal slidesMitch Williams
 
3D Programming Basics: WebGL
3D Programming Basics: WebGL3D Programming Basics: WebGL
3D Programming Basics: WebGLGlobant
 
Design stunning user experience with expression blend
Design stunning user experience with expression blendDesign stunning user experience with expression blend
Design stunning user experience with expression blendKosala Nuwan Perera
 
3D face creation via 2D images within blender virtual environment
3D face creation via 2D images within blender virtual environment3D face creation via 2D images within blender virtual environment
3D face creation via 2D images within blender virtual environmentnooriasukmaningtyas
 
CURRICULUM VITAE
CURRICULUM VITAECURRICULUM VITAE
CURRICULUM VITAEVicky Kumar
 
Code understanding and systems design with visual studio 2010
Code understanding and systems design with visual studio 2010Code understanding and systems design with visual studio 2010
Code understanding and systems design with visual studio 2010Spiffy
 
Tech Ed09 Net Best Practices Bijoy New
Tech Ed09 Net Best Practices Bijoy NewTech Ed09 Net Best Practices Bijoy New
Tech Ed09 Net Best Practices Bijoy Newrsnarayanan
 
How ABB shapes the future of industry with Microsoft HoloLens and Unity - Uni...
How ABB shapes the future of industry with Microsoft HoloLens and Unity - Uni...How ABB shapes the future of industry with Microsoft HoloLens and Unity - Uni...
How ABB shapes the future of industry with Microsoft HoloLens and Unity - Uni...Unity Technologies
 
Development of 3D Website Along with VFX and Animation
Development of 3D Website Along with VFX and AnimationDevelopment of 3D Website Along with VFX and Animation
Development of 3D Website Along with VFX and AnimationYogeshIJTSRD
 
It presentation specialised application software
It presentation specialised application softwareIt presentation specialised application software
It presentation specialised application softwareNisarga Nikam
 
O365 and SharePoint Connect - Create an immersive experience with office 365...
O365 and SharePoint Connect  - Create an immersive experience with office 365...O365 and SharePoint Connect  - Create an immersive experience with office 365...
O365 and SharePoint Connect - Create an immersive experience with office 365...Alexander Meijers
 
O365Con18 - Create an Immersive Experience with Office365 Data and Mixed Real...
O365Con18 - Create an Immersive Experience with Office365 Data and Mixed Real...O365Con18 - Create an Immersive Experience with Office365 Data and Mixed Real...
O365Con18 - Create an Immersive Experience with Office365 Data and Mixed Real...NCCOMMS
 
Silverlight overview
Silverlight overviewSilverlight overview
Silverlight overviewTaras Romanyk
 
Roadmap to Become Experts.pptx
Roadmap to Become Experts.pptxRoadmap to Become Experts.pptx
Roadmap to Become Experts.pptxdscwidyatamanew
 
Designing and developing products for multiple platforms
Designing and developing products for multiple platformsDesigning and developing products for multiple platforms
Designing and developing products for multiple platformsDesignit
 
amiryaqub.doc
amiryaqub.docamiryaqub.doc
amiryaqub.docbutest
 
Using Edge Animate to Create a Reusable Component Set
Using Edge Animate to Create a Reusable Component SetUsing Edge Animate to Create a Reusable Component Set
Using Edge Animate to Create a Reusable Component SetJoseph Labrecque
 

Semelhante a Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation (20)

Sx sw speaker proposal slides
Sx sw speaker proposal slidesSx sw speaker proposal slides
Sx sw speaker proposal slides
 
From Vision to Visualization with ProtoTech Solutions
From Vision to Visualization with ProtoTech SolutionsFrom Vision to Visualization with ProtoTech Solutions
From Vision to Visualization with ProtoTech Solutions
 
3D Programming Basics: WebGL
3D Programming Basics: WebGL3D Programming Basics: WebGL
3D Programming Basics: WebGL
 
Design stunning user experience with expression blend
Design stunning user experience with expression blendDesign stunning user experience with expression blend
Design stunning user experience with expression blend
 
3D face creation via 2D images within blender virtual environment
3D face creation via 2D images within blender virtual environment3D face creation via 2D images within blender virtual environment
3D face creation via 2D images within blender virtual environment
 
CURRICULUM VITAE
CURRICULUM VITAECURRICULUM VITAE
CURRICULUM VITAE
 
Code understanding and systems design with visual studio 2010
Code understanding and systems design with visual studio 2010Code understanding and systems design with visual studio 2010
Code understanding and systems design with visual studio 2010
 
Tech Ed09 Net Best Practices Bijoy New
Tech Ed09 Net Best Practices Bijoy NewTech Ed09 Net Best Practices Bijoy New
Tech Ed09 Net Best Practices Bijoy New
 
How ABB shapes the future of industry with Microsoft HoloLens and Unity - Uni...
How ABB shapes the future of industry with Microsoft HoloLens and Unity - Uni...How ABB shapes the future of industry with Microsoft HoloLens and Unity - Uni...
How ABB shapes the future of industry with Microsoft HoloLens and Unity - Uni...
 
Development of 3D Website Along with VFX and Animation
Development of 3D Website Along with VFX and AnimationDevelopment of 3D Website Along with VFX and Animation
Development of 3D Website Along with VFX and Animation
 
It presentation specialised application software
It presentation specialised application softwareIt presentation specialised application software
It presentation specialised application software
 
O365 and SharePoint Connect - Create an immersive experience with office 365...
O365 and SharePoint Connect  - Create an immersive experience with office 365...O365 and SharePoint Connect  - Create an immersive experience with office 365...
O365 and SharePoint Connect - Create an immersive experience with office 365...
 
O365Con18 - Create an Immersive Experience with Office365 Data and Mixed Real...
O365Con18 - Create an Immersive Experience with Office365 Data and Mixed Real...O365Con18 - Create an Immersive Experience with Office365 Data and Mixed Real...
O365Con18 - Create an Immersive Experience with Office365 Data and Mixed Real...
 
Silverlight overview
Silverlight overviewSilverlight overview
Silverlight overview
 
What is Jibe?
What is Jibe?What is Jibe?
What is Jibe?
 
Roadmap to Become Experts.pptx
Roadmap to Become Experts.pptxRoadmap to Become Experts.pptx
Roadmap to Become Experts.pptx
 
Designing and developing products for multiple platforms
Designing and developing products for multiple platformsDesigning and developing products for multiple platforms
Designing and developing products for multiple platforms
 
amiryaqub.doc
amiryaqub.docamiryaqub.doc
amiryaqub.doc
 
3d-builder.docx
3d-builder.docx3d-builder.docx
3d-builder.docx
 
Using Edge Animate to Create a Reusable Component Set
Using Edge Animate to Create a Reusable Component SetUsing Edge Animate to Create a Reusable Component Set
Using Edge Animate to Create a Reusable Component Set
 

Mais de goodfriday

Narine Presentations 20051021 134052
Narine Presentations 20051021 134052Narine Presentations 20051021 134052
Narine Presentations 20051021 134052goodfriday
 
09 03 22 easter
09 03 22 easter09 03 22 easter
09 03 22 eastergoodfriday
 
Holy Week Easter 2009
Holy Week Easter 2009Holy Week Easter 2009
Holy Week Easter 2009goodfriday
 
Holt Park Easter 09 Swim
Holt Park Easter 09 SwimHolt Park Easter 09 Swim
Holt Park Easter 09 Swimgoodfriday
 
Swarthmore Lentbrochure20092
Swarthmore Lentbrochure20092Swarthmore Lentbrochure20092
Swarthmore Lentbrochure20092goodfriday
 
Eastercard2009
Eastercard2009Eastercard2009
Eastercard2009goodfriday
 
Easterservices2009
Easterservices2009Easterservices2009
Easterservices2009goodfriday
 
Bulletin Current
Bulletin CurrentBulletin Current
Bulletin Currentgoodfriday
 
March 2009 Newsletter
March 2009 NewsletterMarch 2009 Newsletter
March 2009 Newslettergoodfriday
 
Lent Easter 2009
Lent Easter 2009Lent Easter 2009
Lent Easter 2009goodfriday
 
Easterpowersports09
Easterpowersports09Easterpowersports09
Easterpowersports09goodfriday
 
Easter Trading 09
Easter Trading 09Easter Trading 09
Easter Trading 09goodfriday
 
Easter Brochure 2009
Easter Brochure 2009Easter Brochure 2009
Easter Brochure 2009goodfriday
 
March April 2009 Calendar
March April 2009 CalendarMarch April 2009 Calendar
March April 2009 Calendargoodfriday
 

Mais de goodfriday (20)

Narine Presentations 20051021 134052
Narine Presentations 20051021 134052Narine Presentations 20051021 134052
Narine Presentations 20051021 134052
 
Triunemar05
Triunemar05Triunemar05
Triunemar05
 
09 03 22 easter
09 03 22 easter09 03 22 easter
09 03 22 easter
 
Holy Week Easter 2009
Holy Week Easter 2009Holy Week Easter 2009
Holy Week Easter 2009
 
Holt Park Easter 09 Swim
Holt Park Easter 09 SwimHolt Park Easter 09 Swim
Holt Park Easter 09 Swim
 
Easter Letter
Easter LetterEaster Letter
Easter Letter
 
April2009
April2009April2009
April2009
 
Swarthmore Lentbrochure20092
Swarthmore Lentbrochure20092Swarthmore Lentbrochure20092
Swarthmore Lentbrochure20092
 
Eastercard2009
Eastercard2009Eastercard2009
Eastercard2009
 
Easterservices2009
Easterservices2009Easterservices2009
Easterservices2009
 
Bulletin Current
Bulletin CurrentBulletin Current
Bulletin Current
 
Easter2009
Easter2009Easter2009
Easter2009
 
Bulletin
BulletinBulletin
Bulletin
 
March 2009 Newsletter
March 2009 NewsletterMarch 2009 Newsletter
March 2009 Newsletter
 
Mar 29 2009
Mar 29 2009Mar 29 2009
Mar 29 2009
 
Lent Easter 2009
Lent Easter 2009Lent Easter 2009
Lent Easter 2009
 
Easterpowersports09
Easterpowersports09Easterpowersports09
Easterpowersports09
 
Easter Trading 09
Easter Trading 09Easter Trading 09
Easter Trading 09
 
Easter Brochure 2009
Easter Brochure 2009Easter Brochure 2009
Easter Brochure 2009
 
March April 2009 Calendar
March April 2009 CalendarMarch April 2009 Calendar
March April 2009 Calendar
 

Último

OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioChristian Posta
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsSeth Reyes
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopBachir Benyammi
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.YounusS2
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaborationbruanjhuli
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxGDSC PJATK
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationIES VE
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdfPedro Manuel
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?IES VE
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Adtran
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Commit University
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1DianaGray10
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1DianaGray10
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...DianaGray10
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsSafe Software
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostMatt Ray
 

Último (20)

OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and Istio
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and Hazards
 
20150722 - AGV
20150722 - AGV20150722 - AGV
20150722 - AGV
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 Workshop
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptx
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdf
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
 

Lessons Learned: Designer/Developer Productivity in Windows Presentation Foundation

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