Exemplo n.º 1
0
        // *** Private Methods ***

        private void CreatePage(NavigationEntry entry)
        {
            // Create the View

            IViewLifetimeContext viewLifetimeContext = viewFactory.CreateView(entry.PageName);

            entry.ViewLifetimeContext = viewLifetimeContext;

            // Activate the view model if it implements IActivatable<,>
            // NB: Use reflection as we do not know the generic parameter types

            object viewModel            = entry.ViewLifetimeContext.ViewModel;
            Type   activatableInterface = ReflectionHelper.GetClosedGenericType(viewModel, typeof(IActivatable <,>));

            if (activatableInterface != null)
            {
                // If required deserialize the arguments and state

                entry.DeserializeData(activatableInterface.GenericTypeArguments[0], activatableInterface.GenericTypeArguments[1]);

                // Activate the view model

                MethodInfo activateMethod = activatableInterface.GetTypeInfo().GetDeclaredMethod("Activate");
                activateMethod.Invoke(viewModel, new object[] { entry.Arguments, entry.State });
            }
        }
            // *** Overriden base methods ***

            protected override void DisplayPage(IViewLifetimeContext viewLifetimeContext)
            {
                DisplayedViews.Add(viewLifetimeContext as MockViewLifetimeContext);
            }
 public new void OnWindowClosing(IViewLifetimeContext viewLifetimeContext)
 {
     base.OnWindowClosing(viewLifetimeContext);
 }
            // *** Methods ***

            public void DisplayPageDirect(IViewLifetimeContext viewLifetimeContext)
            {
                base.DisplayPage(viewLifetimeContext);
            }
Exemplo n.º 5
0
        // *** Protected Methods ***

        protected virtual void DisplayPage(IViewLifetimeContext viewLifetimeContext)
        {
            // Create a new content host for the page

            ContentControl contentHost = new ContentControl()
            {
                Content = viewLifetimeContext.View,
                HorizontalContentAlignment = HorizontalAlignment.Stretch,
                VerticalContentAlignment = VerticalAlignment.Stretch
            };

            // Register for the window closing event to all disposal of the page and view-model

            Window.Current.Closed += (sender, e) => OnWindowClosing(viewLifetimeContext);

            // Display the page and activate the window

            Window.Current.Content = contentHost;
            Window.Current.Activate();
        }
Exemplo n.º 6
0
        protected void OnWindowClosing(IViewLifetimeContext viewLifetimeContext)
        {
            // Call NavigatingFrom(...) methods

            if (viewLifetimeContext.View is INavigationAware)
                ((INavigationAware)viewLifetimeContext.View).NavigatingFrom(NavigationMode.Back);

            if (viewLifetimeContext.ViewModel is INavigationAware)
                ((INavigationAware)viewLifetimeContext.ViewModel).NavigatingFrom(NavigationMode.Back);

            // Dispose of the view lifetime context

            viewLifetimeContext.Dispose();
        }
Exemplo n.º 7
0
        protected void OnWindowClosing(IViewLifetimeContext viewLifetimeContext)
        {
            if (viewLifetimeContext == null)
                throw new ArgumentNullException(nameof(viewLifetimeContext));

            // Call NavigatingFrom(...) methods

            if (viewLifetimeContext.View is INavigationAware)
                ((INavigationAware)viewLifetimeContext.View).NavigatingFrom(PageNavigationMode.Back);

            if (viewLifetimeContext.ViewModel is INavigationAware)
                ((INavigationAware)viewLifetimeContext.ViewModel).NavigatingFrom(PageNavigationMode.Back);

            // Dispose of the view lifetime context

            viewLifetimeContext.Dispose();
        }
Exemplo n.º 8
0
            // *** Constructors ***

            public PageDetails(IViewLifetimeContext viewLifetimeContext)
            {
                this.ViewLifetimeContext = viewLifetimeContext;
            }