Esempio n. 1
0
        private static ControlNavigationHandler EnsureNavigationHandler(DependencyObject d)
        {
            ControlNavigationHandler handler = GetNavigationHandler(d);

            if (handler == null)
            {
                var handlers = MEFedContainer.Instance.Resolver.Container.GetExportedValues <ControlNavigationHandler>();
                handler = handlers.FirstOrDefault(x => x.CanSupportControl(d));
                if (handler == null)
                {
                    throw new InvalidOperationException(d.GetType().FullName +
                                                        " does not support the NavigateTo. Note: you can create your own by implementing a ControlNavigationHandler and exporting it as type ControlNavigationHandler");
                }

                SetNavigationHandler(d, handler);                 // store the handler in the control itself
            }

            return(handler);
        }
Esempio n. 2
0
        private static void OnNavigateOnceLoadedPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            string navigateTo = GetNavigateTo(d);

            if (GetNavigateOnceLoaded(d) && !String.IsNullOrEmpty(navigateTo))
            {
                ControlNavigationHandler handler = GetNavigationHandler(d);
                if (handler == null)
                {
                    return;
                }

                var element = (FrameworkElement)d;
                RoutedEventHandler elementOnLoaded = null;                 // fire this only once
                elementOnLoaded = delegate
                {
                    handler.OnEventFired(navigateTo);
                    element.Loaded -= elementOnLoaded;
                };
                element.Loaded += elementOnLoaded;
            }
        }
Esempio n. 3
0
 /// <summary>
 /// Sets the NavigationHandler property. This dependency property
 /// indicates ....
 /// </summary>
 public static void SetNavigationHandler(DependencyObject d, ControlNavigationHandler value)
 {
     d.SetValue(NavigationHandlerProperty, value);
 }