예제 #1
0
        public UIElement GetOrCreateViewType(Type viewType)
        {
            var cached = IoC.GetAllInstances(viewType).OfType <UIElement>().FirstOrDefault();

            if (cached != null)
            {
                Caliburn.Micro.ViewLocator.InitializeComponent(cached);
                return(cached);
            }

            if (viewType.IsInterface ||
                viewType.IsAbstract ||
                !typeof(UIElement).IsAssignableFrom(viewType))
            {
                return(new TextBlock {
                    Text = string.Format("Cannot create {0}.", viewType.FullName)
                });
            }

            var newInstance      = Activator.CreateInstance(viewType) as UIElement;
            var frameworkElement = newInstance as FrameworkElement;

            if (frameworkElement != null)
            {
                var resources = themeManager.GetThemeResources();
                foreach (var d in resources)
                {
                    frameworkElement.Resources.MergedDictionaries.Add(d);
                }
            }

            Caliburn.Micro.ViewLocator.InitializeComponent(newInstance);
            return(newInstance);
        }
예제 #2
0
        public UIElement GetOrCreateViewType(Type viewType)
        {
            var cached = IoC.GetAllInstances(viewType).OfType <UIElement>().FirstOrDefault();

            if (cached != null)
            {
                Caliburn.Micro.ViewLocator.InitializeComponent(cached);
                return(cached);
            }

            if (viewType.IsInterface || viewType.IsAbstract || !typeof(UIElement).IsAssignableFrom(viewType))
            {
                return(new TextBlock {
                    Text = $"Cannot create {viewType.FullName}."
                });
            }

            var newInstance      = (UIElement)Activator.CreateInstance(viewType);
            var frameworkElement = newInstance as FrameworkElement;

            frameworkElement?.Resources.MergedDictionaries.Add(_themeManager.GetThemeResources());

            Caliburn.Micro.ViewLocator.InitializeComponent(newInstance);
            return(newInstance);
        }