SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Navigation


  Eyal Vardi
  CEO E4D Solutions LTD
  Microsoft MVP Visual C#
  blog: www.eVardi.com
Agenda
           Interaction Request

           State-Based Navigation

           View-Based Navigation




© 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
Interaction Request




© 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
View Model Codes Sample
        InteractionRequest<Confirmation> action { get; set; }

        action.Raise(
             new Confirmation { Title = "Test II", Content = DateTime.Now },
             x => Date = x.Content.ToString()
        );




        <ei:Interaction.Triggers>
           <prism:InteractionRequestTrigger
               SourceObject="{Binding action}">
               <prism:PopupChildWindowAction
                        ContentTemplate="{StaticResource NT}"/>
        </ei:Interaction.Triggers>




© 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
Interaction in ViewModel




© 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
Interaction in View




© 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
Interaction Request


© 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
State-Based Navigation




© 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
State-Based Navigation


                                                                                 View
                                                           Binding
                                                                                 Model




© 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
State-Based Navigation




© 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
Data State Behavior
        <i:Interaction.Behaviors>
             <ei:DataStateBehavior Binding="{Binding ShowDetails}" Value="True"
                     TrueState="ShowDetails"
                     FalseState="ShowContacts"/>
        </i:Interaction.Behaviors>

        <VisualStateManager.VisualStateGroups>

             <VisualStateGroup x:Name="DetailStates">

                    <VisualStateGroup.Transitions />

                    <VisualState x:Name="ShowContacts" />
                    <VisualState x:Name="ShowContacts" />

             </VisualStateGroup>

        </VisualStateManager.VisualStateGroups>




© 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
Data State Behavior


© 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
View-Based Navigation




© 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
Basic Region Navigation
           The view to be displayed is identified via a URI
                regionManager.RequestNavigate(
                                "MainRegion",
                                new Uri("InboxView", UriKind.Relative) );




           View Registration
                // Unity
                container.RegisterType<object, InboxView>("InboxView");

                // MEF
                [Export("InboxView")]
                public partial class InboxView : UserControl




© 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
RequestNavigate Method
           The RequestNavigate method also allows you
            to specify a callback method, or a delegate,
            which will be called when navigation is
            complete.

        private void SelectedEmployeeChanged(object sender, EventArgs e)
        {
           ...
           regionManager.RequestNavigate(
             RegionNames.TabRegion, "EmployeeDetails", NavigationCompleted);
        }

        private void NavigationCompleted(NavigationResult result) { ... }




© 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
INavigationAware Interface
           By implementing this interface, your view or
            view model can opt-in to participate in the
            navigation process.

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




                                                                      IsNavigationTarget
            View I                                                                           View II
             ( Form )           OnNavigatedFrom                              OnNavigatedTo    ( To )

© 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
Basic Navigation


© 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
IRegionMemberLifetime
           Sometimes you will want the deactivated view
            to be removed from the region.


        public class EmployeeDetailsViewModel : IRegionMemberLifetime
        {
           public bool KeepAlive { get { return true; } }
        }




© 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
Passing Parameters During
   Navigation
        Employee employee = Employees.CurrentItem as Employee;

        if (employee != null)
        {
           UriQuery query = new UriQuery();
           query.Add("ID", employee.Id);

             _regionManager.RequestNavigate( RegionNames.TabRegion,
                        new Uri("EmployeeDetailsView" + query.ToString(),
                        UriKind.Relative) );
        }



        public void OnNavigatedTo( NavigationContext navigationContext )
        {
           string id = navigationContext.Parameters["ID"];
        }


© 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
IRegionNavigationContentLoader




© 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
Confirming or Cancelling Nav




© 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
IConfirmNavigationRequest
           The implementation of this method invokes
            the interaction request defined earlier so that
            the user can confirm or cancel the navigation
            operation.

        void IConfirmNavigationRequest.ConfirmNavigationRequest(
                           NavigationContext navContext, Action<bool> callback)
        {
           this.confirmExitInteractionRequest.Raise (
               new Confirmation { Content = "...", Title = "..." },
               c => callback(c.Confirmed)
           );
        }




© 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
Confirming or Cancelling
     Navigation

© 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
Using the Navigation Journal
           The NavigationContext class provides access
            to the region navigation service.
           The region navigation service implements the
            IRegionNavigationService.

        public interface IRegionNavigationService : INavigateAsync
        {
          IRegion Region {get; set;}
          IRegionNavigationJournal Journal {get;}
          event EventHandler<RegionNavigationEventArgs> Navigating;
          event EventHandler<RegionNavigationEventArgs> Navigated;
          event EventHandler<RegionNavigationFailedEventArgs> NavigationFailed;
        }




© 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
IRegionNavigationJournal
           The Journal property provides access to the
            navigation journal associated with the region.

        public interface IRegionNavigationJournal
        {
           bool CanGoBack { get; }
           bool CanGoForward { get; }
           IRegionNavigationJournalEntry CurrentEntry { get; }
           INavigateAsync NavigationTarget { get; set; }
           void Clear();
           void GoBack();
           void GoForward();
           void RecordNavigation(IRegionNavigationJournalEntry entry);
        }




© 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
The Region
   Navigation
   Sequence




© 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
Navigation


© 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il

Weitere ähnliche Inhalte

Andere mochten auch

Andere mochten auch (11)

ASP.NET MVC Core
ASP.NET MVC CoreASP.NET MVC Core
ASP.NET MVC Core
 
DotNet MVC and webpack + Babel + react
DotNet MVC and webpack + Babel + reactDotNet MVC and webpack + Babel + react
DotNet MVC and webpack + Babel + react
 
Hướng dẫn cài đặt windows server 2008 cơ bản cho người mới bắt đầu.
Hướng dẫn cài đặt windows server 2008 cơ bản cho người mới bắt đầu.Hướng dẫn cài đặt windows server 2008 cơ bản cho người mới bắt đầu.
Hướng dẫn cài đặt windows server 2008 cơ bản cho người mới bắt đầu.
 
Bài 4: Triển khai Active Directory: Quản trị nhóm - Giáo trình FPT
Bài 4: Triển khai Active Directory: Quản trị nhóm - Giáo trình FPTBài 4: Triển khai Active Directory: Quản trị nhóm - Giáo trình FPT
Bài 4: Triển khai Active Directory: Quản trị nhóm - Giáo trình FPT
 
Bài 8: Triển khai bảo mật sử dụng chính sách nhóm (Group policy) - Giáo trình...
Bài 8: Triển khai bảo mật sử dụng chính sách nhóm (Group policy) - Giáo trình...Bài 8: Triển khai bảo mật sử dụng chính sách nhóm (Group policy) - Giáo trình...
Bài 8: Triển khai bảo mật sử dụng chính sách nhóm (Group policy) - Giáo trình...
 
Bài 5: Triển khai AD – Quản trị tài khoản máy tính - Giáo trình FPT
Bài 5: Triển khai AD – Quản trị tài khoản máy tính - Giáo trình FPTBài 5: Triển khai AD – Quản trị tài khoản máy tính - Giáo trình FPT
Bài 5: Triển khai AD – Quản trị tài khoản máy tính - Giáo trình FPT
 
Bài 6: Triển khai hạ tầng chính sách nhóm (GP) - Giáo trình FPT
Bài 6: Triển khai hạ tầng chính sách nhóm (GP) - Giáo trình FPTBài 6: Triển khai hạ tầng chính sách nhóm (GP) - Giáo trình FPT
Bài 6: Triển khai hạ tầng chính sách nhóm (GP) - Giáo trình FPT
 
Bài 3: Triển khai dịch vụ Active Directory - Giáo trình FPT
Bài 3: Triển khai dịch vụ Active Directory - Giáo trình FPTBài 3: Triển khai dịch vụ Active Directory - Giáo trình FPT
Bài 3: Triển khai dịch vụ Active Directory - Giáo trình FPT
 
Bài 2 Cài đặt Windows Server 2008 - Giáo trình FPT
Bài 2 Cài đặt Windows Server 2008 - Giáo trình FPTBài 2 Cài đặt Windows Server 2008 - Giáo trình FPT
Bài 2 Cài đặt Windows Server 2008 - Giáo trình FPT
 
Bài 7: Quản trị người dùng thông qua chính sách nhóm - Giáo trình FPT
Bài 7: Quản trị người dùng thông qua chính sách nhóm - Giáo trình FPTBài 7: Quản trị người dùng thông qua chính sách nhóm - Giáo trình FPT
Bài 7: Quản trị người dùng thông qua chính sách nhóm - Giáo trình FPT
 
OLAP & DATA WAREHOUSE
OLAP & DATA WAREHOUSEOLAP & DATA WAREHOUSE
OLAP & DATA WAREHOUSE
 

Ähnlich wie Prism Navigation

iPhone - web development lotus notes domino
iPhone - web development lotus notes dominoiPhone - web development lotus notes domino
iPhone - web development lotus notes domino
dominion
 
Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development
Mahmoud Hamed Mahmoud
 

Ähnlich wie Prism Navigation (20)

Asp.Net Mvc Internals &amp; Extensibility
Asp.Net Mvc Internals &amp; ExtensibilityAsp.Net Mvc Internals &amp; Extensibility
Asp.Net Mvc Internals &amp; Extensibility
 
Asp.net mvc internals & extensibility
Asp.net mvc internals & extensibilityAsp.net mvc internals & extensibility
Asp.net mvc internals & extensibility
 
Coherence 12.1.2 Live Events
Coherence 12.1.2 Live EventsCoherence 12.1.2 Live Events
Coherence 12.1.2 Live Events
 
Triggers, actions & behaviors in XAML
Triggers, actions & behaviors in XAMLTriggers, actions & behaviors in XAML
Triggers, actions & behaviors in XAML
 
Mvc & java script
Mvc & java scriptMvc & java script
Mvc & java script
 
SignalR
SignalRSignalR
SignalR
 
Web api crud operations
Web api crud operationsWeb api crud operations
Web api crud operations
 
Net conf BG xamarin lecture
Net conf BG xamarin lectureNet conf BG xamarin lecture
Net conf BG xamarin lecture
 
OID Install and Config
OID Install and ConfigOID Install and Config
OID Install and Config
 
iPhone - web development lotus notes domino
iPhone - web development lotus notes dominoiPhone - web development lotus notes domino
iPhone - web development lotus notes domino
 
JavaCro'14 - Building interactive web applications with Vaadin – Peter Lehto
JavaCro'14 - Building interactive web applications with Vaadin – Peter LehtoJavaCro'14 - Building interactive web applications with Vaadin – Peter Lehto
JavaCro'14 - Building interactive web applications with Vaadin – Peter Lehto
 
Android101 : Introduksjon til Android
Android101 : Introduksjon til AndroidAndroid101 : Introduksjon til Android
Android101 : Introduksjon til Android
 
Présentation et bonnes pratiques du pattern MVVM - MIC Belgique
Présentation et bonnes pratiques du pattern MVVM - MIC BelgiquePrésentation et bonnes pratiques du pattern MVVM - MIC Belgique
Présentation et bonnes pratiques du pattern MVVM - MIC Belgique
 
EWD 3 Training Course Part 14: Using Ajax for QEWD Messages
EWD 3 Training Course Part 14: Using Ajax for QEWD MessagesEWD 3 Training Course Part 14: Using Ajax for QEWD Messages
EWD 3 Training Course Part 14: Using Ajax for QEWD Messages
 
Async & Parallel in JavaScript
Async & Parallel in JavaScriptAsync & Parallel in JavaScript
Async & Parallel in JavaScript
 
HTML5 on Mobile
HTML5 on MobileHTML5 on Mobile
HTML5 on Mobile
 
112815 java ee8_davidd
112815 java ee8_davidd112815 java ee8_davidd
112815 java ee8_davidd
 
Introduction to AngularJS
Introduction to AngularJSIntroduction to AngularJS
Introduction to AngularJS
 
Creating an Uber Clone - Part XXIV - Transcript.pdf
Creating an Uber Clone - Part XXIV - Transcript.pdfCreating an Uber Clone - Part XXIV - Transcript.pdf
Creating an Uber Clone - Part XXIV - Transcript.pdf
 
Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development
 

Mehr von Eyal Vardi

Mehr von Eyal Vardi (20)

Why magic
Why magicWhy magic
Why magic
 
Smart Contract
Smart ContractSmart Contract
Smart Contract
 
Rachel's grandmother's recipes
Rachel's grandmother's recipesRachel's grandmother's recipes
Rachel's grandmother's recipes
 
Performance Optimization In Angular 2
Performance Optimization In Angular 2Performance Optimization In Angular 2
Performance Optimization In Angular 2
 
Angular 2 Architecture (Bucharest 26/10/2016)
Angular 2 Architecture (Bucharest 26/10/2016)Angular 2 Architecture (Bucharest 26/10/2016)
Angular 2 Architecture (Bucharest 26/10/2016)
 
Angular 2 NgModule
Angular 2 NgModuleAngular 2 NgModule
Angular 2 NgModule
 
Upgrading from Angular 1.x to Angular 2.x
Upgrading from Angular 1.x to Angular 2.xUpgrading from Angular 1.x to Angular 2.x
Upgrading from Angular 1.x to Angular 2.x
 
Angular 2 - Ahead of-time Compilation
Angular 2 - Ahead of-time CompilationAngular 2 - Ahead of-time Compilation
Angular 2 - Ahead of-time Compilation
 
Routing And Navigation
Routing And NavigationRouting And Navigation
Routing And Navigation
 
Angular 2 Architecture
Angular 2 ArchitectureAngular 2 Architecture
Angular 2 Architecture
 
Angular 1.x vs. Angular 2.x
Angular 1.x vs. Angular 2.xAngular 1.x vs. Angular 2.x
Angular 1.x vs. Angular 2.x
 
Angular 2.0 Views
Angular 2.0 ViewsAngular 2.0 Views
Angular 2.0 Views
 
Component lifecycle hooks in Angular 2.0
Component lifecycle hooks in Angular 2.0Component lifecycle hooks in Angular 2.0
Component lifecycle hooks in Angular 2.0
 
Template syntax in Angular 2.0
Template syntax in Angular 2.0Template syntax in Angular 2.0
Template syntax in Angular 2.0
 
Http Communication in Angular 2.0
Http Communication in Angular 2.0Http Communication in Angular 2.0
Http Communication in Angular 2.0
 
Angular 2.0 Dependency injection
Angular 2.0 Dependency injectionAngular 2.0 Dependency injection
Angular 2.0 Dependency injection
 
Angular 2.0 Routing and Navigation
Angular 2.0 Routing and NavigationAngular 2.0 Routing and Navigation
Angular 2.0 Routing and Navigation
 
Async & Parallel in JavaScript
Async & Parallel in JavaScriptAsync & Parallel in JavaScript
Async & Parallel in JavaScript
 
Angular 2.0 Pipes
Angular 2.0 PipesAngular 2.0 Pipes
Angular 2.0 Pipes
 
Angular 2.0 forms
Angular 2.0 formsAngular 2.0 forms
Angular 2.0 forms
 

Kürzlich hochgeladen

Salient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functionsSalient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functions
KarakKing
 
Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please Practise
AnaAcapella
 

Kürzlich hochgeladen (20)

Spatium Project Simulation student brief
Spatium Project Simulation student briefSpatium Project Simulation student brief
Spatium Project Simulation student brief
 
ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.
 
Salient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functionsSalient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functions
 
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptxSKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
 
Single or Multiple melodic lines structure
Single or Multiple melodic lines structureSingle or Multiple melodic lines structure
Single or Multiple melodic lines structure
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdf
 
Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibit
 
Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.
 
How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17
 
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
 
Google Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptxGoogle Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptx
 
How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17
 
Food safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdfFood safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdf
 
Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024
 
Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please Practise
 
Key note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfKey note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdf
 
Wellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptxWellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptx
 
Understanding Accommodations and Modifications
Understanding  Accommodations and ModificationsUnderstanding  Accommodations and Modifications
Understanding Accommodations and Modifications
 
How to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSHow to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POS
 

Prism Navigation

  • 1. Navigation Eyal Vardi CEO E4D Solutions LTD Microsoft MVP Visual C# blog: www.eVardi.com
  • 2. Agenda  Interaction Request  State-Based Navigation  View-Based Navigation © 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
  • 3. Interaction Request © 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
  • 4. View Model Codes Sample InteractionRequest<Confirmation> action { get; set; } action.Raise( new Confirmation { Title = "Test II", Content = DateTime.Now }, x => Date = x.Content.ToString() ); <ei:Interaction.Triggers> <prism:InteractionRequestTrigger SourceObject="{Binding action}"> <prism:PopupChildWindowAction ContentTemplate="{StaticResource NT}"/> </ei:Interaction.Triggers> © 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
  • 5. Interaction in ViewModel © 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
  • 6. Interaction in View © 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
  • 7. Interaction Request © 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
  • 8. State-Based Navigation © 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
  • 9. State-Based Navigation View Binding Model © 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
  • 10. State-Based Navigation © 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
  • 11. Data State Behavior <i:Interaction.Behaviors> <ei:DataStateBehavior Binding="{Binding ShowDetails}" Value="True" TrueState="ShowDetails" FalseState="ShowContacts"/> </i:Interaction.Behaviors> <VisualStateManager.VisualStateGroups> <VisualStateGroup x:Name="DetailStates"> <VisualStateGroup.Transitions /> <VisualState x:Name="ShowContacts" /> <VisualState x:Name="ShowContacts" /> </VisualStateGroup> </VisualStateManager.VisualStateGroups> © 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
  • 12. Data State Behavior © 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
  • 13. View-Based Navigation © 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
  • 14. Basic Region Navigation  The view to be displayed is identified via a URI regionManager.RequestNavigate( "MainRegion", new Uri("InboxView", UriKind.Relative) );  View Registration // Unity container.RegisterType<object, InboxView>("InboxView"); // MEF [Export("InboxView")] public partial class InboxView : UserControl © 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
  • 15. RequestNavigate Method  The RequestNavigate method also allows you to specify a callback method, or a delegate, which will be called when navigation is complete. private void SelectedEmployeeChanged(object sender, EventArgs e) { ... regionManager.RequestNavigate( RegionNames.TabRegion, "EmployeeDetails", NavigationCompleted); } private void NavigationCompleted(NavigationResult result) { ... } © 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
  • 16. INavigationAware Interface  By implementing this interface, your view or view model can opt-in to participate in the navigation process. public interface INavigationAware { bool IsNavigationTarget( NavigationContext navigationContext ); void OnNavigatedTo ( NavigationContext navigationContext ); void OnNavigatedFrom ( NavigationContext navigationContext ); } IsNavigationTarget View I View II ( Form ) OnNavigatedFrom OnNavigatedTo ( To ) © 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
  • 17. Basic Navigation © 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
  • 18. IRegionMemberLifetime  Sometimes you will want the deactivated view to be removed from the region. public class EmployeeDetailsViewModel : IRegionMemberLifetime { public bool KeepAlive { get { return true; } } } © 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
  • 19. Passing Parameters During Navigation Employee employee = Employees.CurrentItem as Employee; if (employee != null) { UriQuery query = new UriQuery(); query.Add("ID", employee.Id); _regionManager.RequestNavigate( RegionNames.TabRegion, new Uri("EmployeeDetailsView" + query.ToString(), UriKind.Relative) ); } public void OnNavigatedTo( NavigationContext navigationContext ) { string id = navigationContext.Parameters["ID"]; } © 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
  • 20. IRegionNavigationContentLoader © 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
  • 21. Confirming or Cancelling Nav © 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
  • 22. IConfirmNavigationRequest  The implementation of this method invokes the interaction request defined earlier so that the user can confirm or cancel the navigation operation. void IConfirmNavigationRequest.ConfirmNavigationRequest( NavigationContext navContext, Action<bool> callback) { this.confirmExitInteractionRequest.Raise ( new Confirmation { Content = "...", Title = "..." }, c => callback(c.Confirmed) ); } © 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
  • 23. Confirming or Cancelling Navigation © 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
  • 24. Using the Navigation Journal  The NavigationContext class provides access to the region navigation service.  The region navigation service implements the IRegionNavigationService. public interface IRegionNavigationService : INavigateAsync { IRegion Region {get; set;} IRegionNavigationJournal Journal {get;} event EventHandler<RegionNavigationEventArgs> Navigating; event EventHandler<RegionNavigationEventArgs> Navigated; event EventHandler<RegionNavigationFailedEventArgs> NavigationFailed; } © 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
  • 25. IRegionNavigationJournal  The Journal property provides access to the navigation journal associated with the region. public interface IRegionNavigationJournal { bool CanGoBack { get; } bool CanGoForward { get; } IRegionNavigationJournalEntry CurrentEntry { get; } INavigateAsync NavigationTarget { get; set; } void Clear(); void GoBack(); void GoForward(); void RecordNavigation(IRegionNavigationJournalEntry entry); } © 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
  • 26. The Region Navigation Sequence © 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il
  • 27. Navigation © 2010 E4D LTD. All rights reserved. Tel: 054-5-767-300, Email: Eyal@E4D.co.il