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

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

Embed Size (px)

Citation preview

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