private TDependencyObject GetStyleSheetParent(TDependencyObject obj) { var currentBindableObject = obj; var oldSelectorType = treeNodeProvider.CurrentSelectorType; try { treeNodeProvider.Switch(SelectorType.LogicalTree); while (currentBindableObject != null) { var styleSheet = dependencyPropertyService.GetStyleSheet(currentBindableObject); if (styleSheet != null) { treeNodeProvider.Switch(oldSelectorType); return(currentBindableObject); } currentBindableObject = treeNodeProvider.GetParent(currentBindableObject as TUIElement); } } finally { treeNodeProvider.Switch(oldSelectorType); } return(null); }
public BaseCss(IDependencyPropertyService <TDependencyObject, TUIElement, TStyle, TDependencyProperty> dependencyPropertyService, ISwitchableTreeNodeProvider <TDependencyObject> treeNodeProvider, IStyleResourcesService applicationResourcesService, INativeStyleService <TStyle, TDependencyObject, TDependencyProperty> nativeStyleService, string defaultCssNamespace, IMarkupExtensionParser markupExpressionParser, Action <Action> uiInvoker, ICssFileProvider fileProvider) { this.dependencyPropertyService = dependencyPropertyService; this.treeNodeProvider = treeNodeProvider; this.applicationResourcesService = applicationResourcesService; this.nativeStyleService = nativeStyleService; this.markupExpressionParser = markupExpressionParser; this.uiInvoker = uiInvoker; this.cssTypeHelper = new CssTypeHelper <TDependencyObject, TUIElement, TDependencyProperty, TStyle>(markupExpressionParser, dependencyPropertyService); CssParser.Initialize(defaultCssNamespace, fileProvider); StyleSheet.GetParent = parent => treeNodeProvider.GetParent((TDependencyObject)parent); StyleSheet.GetStyleSheet = treeNode => dependencyPropertyService.GetStyleSheet((TDependencyObject)treeNode); }
private TDependencyObject GetStyleSheetParent(TDependencyObject obj) { var currentDependencyObject = obj; try { while (currentDependencyObject != null) { var styleSheet = dependencyPropertyService.GetStyleSheet(currentDependencyObject); if (styleSheet != null) { return(currentDependencyObject); } currentDependencyObject = treeNodeProvider.GetParent(currentDependencyObject as TDependencyObject); } } finally { } return(null); }