Example #1
0
        static void InvokeOnRegionManagerAwareElement(object item, Action <IRegionManagerAware> invocation)
        {
            var rmAwareItem = item as IRegionManagerAware;

            if (rmAwareItem != null)
            {
                invocation(rmAwareItem);
            }

            var frameworkElement = item as FrameworkElement;

            if (frameworkElement != null)
            {
                IRegionManagerAware rmAwareDataContext = frameworkElement.DataContext as IRegionManagerAware;
                if (rmAwareDataContext != null)
                {
                    var frameworkElementParent = frameworkElement.Parent as FrameworkElement;
                    if (frameworkElementParent != null)
                    {
                        var rmAwareDataContextParent = frameworkElementParent.DataContext as IRegionManagerAware;
                        if (rmAwareDataContextParent != null)
                        {
                            if (rmAwareDataContext == rmAwareDataContextParent)
                            {
                                return;
                            }
                        }
                    }

                    invocation(rmAwareDataContext);
                }
            }
        }
Example #2
0
        static void InvokeOnRegionManagerAwareElement(object item, Action <IRegionManagerAware> invocation)
        {
#if LOGGING
            long startTicks = Log.Trace($"Enter", Common.LOG_CATEGORY);
#endif

            // Want to support View and/or ViewModel first approaches

            var rmAwareItem = item as IRegionManagerAware;

            // ViewModel first approach

            // Check if supports IRegionManagerAware

            if (rmAwareItem != null)
            {
                invocation(rmAwareItem);
            }

            // View first approach

            // If we get a View it will be a FrameworkElement in WPF

            var frameworkElement = item as FrameworkElement;

            if (frameworkElement != null)
            {
                IRegionManagerAware rmAwareDataContext = frameworkElement.DataContext as IRegionManagerAware;

                if (rmAwareDataContext != null)
                {
                    var frameworkElementParent = frameworkElement.Parent as FrameworkElement;

                    // If a view does not have a DataContext, i.e. a ViewModel, it will inherit DataContext of parent view
                    // Avoid setting RegionManager of parent view

                    if (frameworkElementParent != null)
                    {
                        var rmAwareDataContextParent = frameworkElementParent.DataContext as IRegionManagerAware;

                        if (rmAwareDataContextParent != null)
                        {
                            if (rmAwareDataContext == rmAwareDataContextParent)
                            {
                                // This View doesn't have a ViewModel.
                                // It is using ViewModel of Visible parent.  Do not set.

                                return;
                            }
                        }
                    }

                    invocation(rmAwareDataContext);
                }
            }
#if LOGGING
            Log.Trace($"Exit", Common.LOG_CATEGORY, startTicks);
#endif
        }
        private void RemoveScopedRegionManagerFromView(IModelVisualizer modelVisualizer)
        {
            IRegionManagerAware regionManagerAware = modelVisualizer.ViewModel as IRegionManagerAware;

            if (regionManagerAware != null)
            {
                RegionManager.SetRegionManager(modelVisualizer.View, null);
            }
        }
        private void RegisterScopedRegionManagerToView(IModelVisualizer modelVisualizer)
        {
            IRegionManagerAware regionManagerAware = modelVisualizer.ViewModel as IRegionManagerAware;

            if (regionManagerAware != null)
            {
                RegionManager.SetRegionManager(modelVisualizer.View, regionManagerAware.RegionManager);
            }
        }
Example #5
0
        private static void InvokeOnRegionManagerAwareElement(object item, Action <IRegionManagerAware> invocation)
        {
            var regionManagerAwareItem = item as IRegionManagerAware;

            if (regionManagerAwareItem != null)
            {
                invocation(regionManagerAwareItem);
            }

            FrameworkElement frameworkElement = item as FrameworkElement;

            if (frameworkElement != null)
            {
                IRegionManagerAware regionManagerAwareDataContext = frameworkElement.DataContext as IRegionManagerAware;
                if (regionManagerAwareDataContext != null)
                {
                    invocation(regionManagerAwareDataContext);
                }
            }
        }
        static void InvokeOnRegionManagerAwareElement(object item, Action <IRegionManagerAware> invocation)
        {
            var rmAwareItem = item as IRegionManagerAware;

            if (rmAwareItem != null)
            {
                invocation(rmAwareItem);
            }

            var frameworkElement = item as FrameworkElement;

            if (frameworkElement != null)
            {
                IRegionManagerAware rmAwareDataContext = frameworkElement.DataContext as IRegionManagerAware;

                if (rmAwareDataContext != null)
                {
                    var frameworkElementParent = frameworkElement.Parent as FrameworkElement;

                    // If a view does not have a DataContext, i.e. a ViewModel, it will inherit DataContext of parent view
                    // Avoid setting RegionManager of parent view

                    if (frameworkElementParent != null)
                    {
                        var rmAwareDataContextParent = frameworkElementParent.DataContext as IRegionManagerAware;

                        if (rmAwareDataContextParent != null)
                        {
                            if (rmAwareDataContext == rmAwareDataContextParent)
                            {
                                // This View doesn't have a ViewModel.  Using ViewModel
                                // of Visible parent.
                                return;
                            }
                        }
                    }

                    invocation(rmAwareDataContext);
                }
            }
        }
        private static void InvokeOnRegionManagerAwareElement(object item, Action <IRegionManagerAware> invocation)
        {
            var regionManagerAwareItem = item as IRegionManagerAware;

            if (regionManagerAwareItem != null)
            {
                invocation(regionManagerAwareItem);
            }

            FrameworkElement frameworkElement = item as FrameworkElement;

            if (frameworkElement != null)
            {
                IRegionManagerAware regionManagerAwareDataContext = frameworkElement.DataContext as IRegionManagerAware;
                if (regionManagerAwareDataContext != null)
                {
                    // If a view doesn't have a data context (view model) it will inherit the data context from the parent view.
                    // The following check is done to avoid setting the RegionManager property in the view model of the parent view by mistake.
                    var frameworkElementParent = frameworkElement.Parent as FrameworkElement;
                    if (frameworkElementParent != null)
                    {
                        var regionManagerAwareDataContextParent = frameworkElementParent.DataContext as IRegionManagerAware;
                        if (regionManagerAwareDataContextParent != null)
                        {
                            if (regionManagerAwareDataContext == regionManagerAwareDataContextParent)
                            {
                                // If all of the previous conditions are true, it means that this view doesn't have a view model
                                // and is using the view model of its visual parent.
                                return;
                            }
                        }
                    }

                    invocation(regionManagerAwareDataContext);
                }
            }
        }