Пример #1
0
        private static StyleGroup LookUpStyleBuilder(
            string controlID,
            string controlType,
            string elementName,
            string elementTypeFullName,
            bool rootElementHasStyle,
            StyleSheet rootElementStyle,
            string themeName)
        {
            ThemeResolutionService.TripleNameKey tripleNameKey1 = new ThemeResolutionService.TripleNameKey(elementName ?? "", themeName ?? "", elementTypeFullName);
            StyleGroup builder = ThemeResolutionService.registeredBuildersByElementNameControlID[(object)tripleNameKey1] as StyleGroup;
            int        num     = 0;

            if (builder == null)
            {
                ThemeResolutionService.TripleNameKey tripleNameKey2 = new ThemeResolutionService.TripleNameKey(controlID ?? "", themeName ?? "", elementTypeFullName);
                builder = ThemeResolutionService.registeredBuildersByElementTypeControlID[(object)tripleNameKey2] as StyleGroup;
                num     = 1;
            }
            if (builder == null)
            {
                ThemeResolutionService.TripleNameKey tripleNameKey2 = new ThemeResolutionService.TripleNameKey(controlType, elementTypeFullName, themeName ?? "");
                builder = ThemeResolutionService.registeredBuildersByElementTypeControlID[(object)tripleNameKey2] as StyleGroup;
                num     = 2;
            }
            if (builder == null)
            {
                ThemeResolutionService.TripleNameKey tripleNameKey2 = new ThemeResolutionService.TripleNameKey(controlType, elementTypeFullName, themeName ?? "");
                builder = ThemeResolutionService.registeredBuildersByElementTypeControlType[(object)tripleNameKey2] as StyleGroup;
                num     = 3;
            }
            if (builder == null)
            {
                ThemeResolutionService.TripleNameKey tripleNameKey2 = new ThemeResolutionService.TripleNameKey("", themeName ?? "", elementTypeFullName);
                builder = ThemeResolutionService.registeredBuildersDefaultByElementType[(object)tripleNameKey2] as StyleGroup;
                num     = 4;
            }
            if (builder == null && themeName != null)
            {
                builder = ThemeResolutionService.registeredBuildersName[(object)themeName] as StyleGroup;
                num     = 5;
            }
            ResolveStyleBuilderEventHandler resolveStyleBuilder = ThemeResolutionService.ResolveStyleBuilder;

            if (resolveStyleBuilder != null)
            {
                ResolveStyleBuilderEventArgs e = new ResolveStyleBuilderEventArgs(themeName, builder);
                resolveStyleBuilder((object)null, e);
                builder = e.Builder;
            }
            return(builder);
        }
Пример #2
0
        private static StyleBuilder LookUpStyleBuilder(string controlID, string controlType, string elementName, string elementTypeFullName, bool rootElementHasStyle, StyleSheet rootElementStyle, string themeName)
        {
            //priority of resolution

            //Find builder by ElementName + ControlID
            //Find builder by ElementName + ControlType.Name
            //Find builder by ElementType + ControlID
            //Find builder by ElementType + ControlType.Name
            //Find Element default builder

            TripleNameKey key = new TripleNameKey(elementName + "", themeName + "", elementTypeFullName);

            StyleBuilder res = registeredBuildersByElementNameControlID[key] as StyleBuilder;

            int resolution = 0;

            if (res == null)
            {
                key        = new TripleNameKey(controlID + "", themeName + "", elementTypeFullName);
                res        = registeredBuildersByElementTypeControlID[key] as StyleBuilder;
                resolution = 1;
            }

            if (res == null)
            {
                TripleNameKey key1 = new TripleNameKey(controlType, elementTypeFullName, themeName + "");
                res        = registeredBuildersByElementTypeControlID[key1] as StyleBuilder;
                resolution = 2;
            }

            if (res == null)
            {
                TripleNameKey key1 = new TripleNameKey(controlType, elementTypeFullName, themeName + "");
                res        = registeredBuildersByElementTypeControlType[key1] as StyleBuilder;
                resolution = 3;
            }

            if (res == null)
            {
                TripleNameKey key1 = new TripleNameKey("", themeName + "", elementTypeFullName);
                res        = registeredBuildersDefaultByElementType[key1] as StyleBuilder;
                resolution = 4;
            }

            if (res == null && themeName != null)
            {
                res        = registeredBuildersName[themeName] as StyleBuilder;
                resolution = 5;
            }

            if (resolution == 4)
            {
                //Fix for "same stylresheet on element only and its control" propblem
                if (rootElementHasStyle &&
                    res is DefaultStyleBuilder &&
                    rootElementStyle == ((DefaultStyleBuilder)res).Style)
                {
                    return(null);
                }
            }

            ResolveStyleBuilderEventHandler eh = ResolveStyleBuilder;

            if (eh != null)
            {
                ResolveStyleBuilderEventArgs args = new ResolveStyleBuilderEventArgs(themeName, res);
                eh(null, args);
                res = args.Builder;
            }

            return(res);
        }