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); }
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); }