composite applications with wpf and prism 4.0 eyal vardi ceo e4d solutions ltd microsoft mvp visual...

23
Composite Applications Composite Applications with WPF and PRISM 4.0 with WPF and PRISM 4.0 Eyal Vardi Eyal Vardi CEO E4D Solutions LTD CEO E4D Solutions LTD Microsoft MVP Visual C# Microsoft MVP Visual C# blog: www.eVardi.com blog: www.eVardi.com

Upload: robert-walker

Post on 17-Jan-2016

219 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Composite Applications with WPF and PRISM 4.0 Eyal Vardi CEO E4D Solutions LTD Microsoft MVP Visual C# blog:

Composite Applications Composite Applications with WPF and PRISM 4.0with WPF and PRISM 4.0

Eyal VardiEyal VardiCEO E4D Solutions LTDCEO E4D Solutions LTDMicrosoft MVP Visual C#Microsoft MVP Visual C#blog: www.eVardi.comblog: www.eVardi.com

Page 2: Composite Applications with WPF and PRISM 4.0 Eyal Vardi CEO E4D Solutions LTD Microsoft MVP Visual C# blog:

AboutAboutConsultingConsulting

MentoringMentoring

ProjectsProjects

Page 3: Composite Applications with WPF and PRISM 4.0 Eyal Vardi CEO E4D Solutions LTD Microsoft MVP Visual C# blog:

AgendaAgenda

How to build Composite application?How to build Composite application?

ModularitModularityy

ProductivityProductivity

ExtensibilityExtensibility

SecuritySecurity CommunicatioCommunicationn

DeploymentDeployment

Multi-Multi-LanguageLanguage

Page 4: Composite Applications with WPF and PRISM 4.0 Eyal Vardi CEO E4D Solutions LTD Microsoft MVP Visual C# blog:

Outlook SampleOutlook Sample

Page 5: Composite Applications with WPF and PRISM 4.0 Eyal Vardi CEO E4D Solutions LTD Microsoft MVP Visual C# blog:

Shell & Region == Master Shell & Region == Master PagePage

RibbonRibbon

App NavApp Nav

App’sApp’s

BodyBody PanePane

Status BarStatus Bar

Page 6: Composite Applications with WPF and PRISM 4.0 Eyal Vardi CEO E4D Solutions LTD Microsoft MVP Visual C# blog:

DEMO

Shell & Shell & RegionRegion

Page 7: Composite Applications with WPF and PRISM 4.0 Eyal Vardi CEO E4D Solutions LTD Microsoft MVP Visual C# blog:

View-Based NavigationView-Based Navigation

_container.RegisterType<Object, ViewName>("ViewName"); _regionManager.RequestNavigate(   "RegionName",   new Uri( "ViewName", UriKind.Relative) );

_container.RegisterType<Object, ViewName>("ViewName"); _regionManager.RequestNavigate(   "RegionName",   new Uri( "ViewName", UriKind.Relative) );

public interface INavigationAware     {    void OnNavigatedTo(NavigationContext navigationContext);          bool IsNavigationTarget(NavigationContext navigationContext);      void OnNavigatedFrom(NavigationContext navigationContext);     }

public interface INavigationAware     {    void OnNavigatedTo(NavigationContext navigationContext);          bool IsNavigationTarget(NavigationContext navigationContext);      void OnNavigatedFrom(NavigationContext navigationContext);     }

Page 8: Composite Applications with WPF and PRISM 4.0 Eyal Vardi CEO E4D Solutions LTD Microsoft MVP Visual C# blog:
Page 9: Composite Applications with WPF and PRISM 4.0 Eyal Vardi CEO E4D Solutions LTD Microsoft MVP Visual C# blog:

DEMO

NavigationNavigation

Page 10: Composite Applications with WPF and PRISM 4.0 Eyal Vardi CEO E4D Solutions LTD Microsoft MVP Visual C# blog:

Event AggregatorEvent Aggregator

Publisher / SubscriberPublisher / Subscriber

PublisherPublisher

PublisherPublisher

PublisherPublisher

SubscriberSubscriber SubscriberSubscriber SubscriberSubscriber

Page 11: Composite Applications with WPF and PRISM 4.0 Eyal Vardi CEO E4D Solutions LTD Microsoft MVP Visual C# blog:

DEMO

Event AggregatorEvent Aggregator

Page 12: Composite Applications with WPF and PRISM 4.0 Eyal Vardi CEO E4D Solutions LTD Microsoft MVP Visual C# blog:

Visual State Manager Visual State Manager (VSM)(VSM)

Data StatesData States

Communication Communication StatesStates

SecuritySecurityStatesStates

Page 13: Composite Applications with WPF and PRISM 4.0 Eyal Vardi CEO E4D Solutions LTD Microsoft MVP Visual C# blog:

Visual State Manager Visual State Manager (VSM)(VSM)

StateState

TransitionTransition

State GroupsState Groups

Page 14: Composite Applications with WPF and PRISM 4.0 Eyal Vardi CEO E4D Solutions LTD Microsoft MVP Visual C# blog:

DEMO

VVisual isual SState tate MManageranager

Page 15: Composite Applications with WPF and PRISM 4.0 Eyal Vardi CEO E4D Solutions LTD Microsoft MVP Visual C# blog:

State-Based NavigationState-Based Navigation

<DataStateBehavior Binding="{Binding IsChecked, ElementName= ShowAsListButton}"    TrueState="ShowAsList" FalseState="ShowAsIcons"/>

<DataStateBehavior Binding="{Binding IsChecked, ElementName= ShowAsListButton}"    TrueState="ShowAsList" FalseState="ShowAsIcons"/>

Page 16: Composite Applications with WPF and PRISM 4.0 Eyal Vardi CEO E4D Solutions LTD Microsoft MVP Visual C# blog:

[TemplateVisualState(Name="Normal" , GroupName="CommonStates")][TemplateVisualState(Name="MouseOver", GroupName="CommonStates")][TemplateVisualState(Name="Pressed" , GroupName="CommonStates")]public class NumericUpDown : Control } {

[TemplateVisualState(Name="Normal" , GroupName="CommonStates")][TemplateVisualState(Name="MouseOver", GroupName="CommonStates")][TemplateVisualState(Name="Pressed" , GroupName="CommonStates")]public class NumericUpDown : Control } {

Initiating State ChangesInitiating State Changes

The authors is responsible for telling VisualStateManager when a visual state change should occur.

private void GoToState(bool useTransitions) } if (isPressed) VisualStateManager.GoToState(this, "Pressed" , useTransitions); else if (isMouseOver) VisualStateManager.GoToState(this, "MouseOver", useTransitions); else VisualStateManager.GoToState(this, "Normal“ , useTransitions); {

private void GoToState(bool useTransitions) } if (isPressed) VisualStateManager.GoToState(this, "Pressed" , useTransitions); else if (isMouseOver) VisualStateManager.GoToState(this, "MouseOver", useTransitions); else VisualStateManager.GoToState(this, "Normal“ , useTransitions); {

Page 17: Composite Applications with WPF and PRISM 4.0 Eyal Vardi CEO E4D Solutions LTD Microsoft MVP Visual C# blog:

Behaviors & Actions are Behaviors & Actions are EverywhereEverywhere

ConditionalConditional

Motion Motion

DataData

AnimationAnimation

Page 18: Composite Applications with WPF and PRISM 4.0 Eyal Vardi CEO E4D Solutions LTD Microsoft MVP Visual C# blog:

<Button Content="Click Me">   

</Button>

<Button Content="Click Me">   

</Button>

XAML XAML Add-onAdd-on

Attached Attached propertyproperty

Drag & DropDrag & Drop

<E4D:MyAction TargetName="lbTrace" /> <E4D:MyAction TargetName="lbTrace" />

    <i:EventTrigger EventName="Click">

</i:EventTrigger>

    <i:EventTrigger EventName="Click">

</i:EventTrigger>

    <i:Interaction.Triggers>

</i:Interaction.Triggers>

    <i:Interaction.Triggers>

</i:Interaction.Triggers>

Behavior is a…Behavior is a…

Page 19: Composite Applications with WPF and PRISM 4.0 Eyal Vardi CEO E4D Solutions LTD Microsoft MVP Visual C# blog:

DEMO

Behaviors & Behaviors & ActionsActions

Page 20: Composite Applications with WPF and PRISM 4.0 Eyal Vardi CEO E4D Solutions LTD Microsoft MVP Visual C# blog:

SHSH

PP

PPCommunication

Communication

WCFWCF

Event AggregatorEvent Aggregator

InterfacesInterfaces

Communication ModuleCommunication Module

Page 21: Composite Applications with WPF and PRISM 4.0 Eyal Vardi CEO E4D Solutions LTD Microsoft MVP Visual C# blog:

SummarySummary

Keep the client thin.

Defined your visual state with VSM.

Use Behaviors & Actions for RAD.

Use the Prism for modularity.

Page 22: Composite Applications with WPF and PRISM 4.0 Eyal Vardi CEO E4D Solutions LTD Microsoft MVP Visual C# blog:

QUESTIONS?QUESTIONS?

Page 23: Composite Applications with WPF and PRISM 4.0 Eyal Vardi CEO E4D Solutions LTD Microsoft MVP Visual C# blog:

Eyal VardiEyal VardiCEO E4D Solutions LTDCEO E4D Solutions LTDMicrosoft MVP Visual C#Microsoft MVP Visual C#blog: www.eVardi.comblog: www.eVardi.com