Esempio n. 1
0
        private static void ReevaluateStylesheetInSubTree(IDomElement <TDependencyObject, TDependencyProperty> domElement, StyleSheet oldStyleSheet,
                                                          IDependencyPropertyService <TDependencyObject, TStyle, TDependencyProperty> dependencyPropertyService,
                                                          INativeStyleService <TStyle, TDependencyObject, TDependencyProperty> nativeStyleService)
        {
            if (domElement.StyleInfo == null)
            {
                return;
            }

            if (domElement == null ||
                !ReferenceEquals(domElement.StyleInfo.CurrentStyleSheet, oldStyleSheet))
            {
                return;
            }

            domElement.StyleInfo.CurrentStyleSheet = GetStyleSheetFromTree(domElement, dependencyPropertyService);
            domElement.ClearAttributeWatcher();

            foreach (var child in domElement.LogicalChildNodes.Concat(domElement.ChildNodes).Distinct().ToList())
            {
                ReevaluateStylesheetInSubTree(child, oldStyleSheet, dependencyPropertyService, nativeStyleService);
            }
        }