public static void Recursive <TDependencyObject, TStyle, TDependencyProperty>(
            this ITreeNodeProvider <TDependencyObject> treeNodeProvider,
            IDependencyPropertyService <TDependencyObject, TStyle, TDependencyProperty> dependencyPropertyService,
            TDependencyObject element,
            int level,
            TDependencyObject expectedParent
            )
            where TDependencyObject : class
            where TStyle : class
            where TDependencyProperty : class
        {
            if (element == null)
            {
                return;
            }

            if (expectedParent != treeNodeProvider.GetParent(element))
            {
                Debug.WriteLine("!!!!!");
                Debug.WriteLine($"Expected parent: { dependencyPropertyService.GetName(expectedParent) }");
                Debug.WriteLine($"Actual parent:   { dependencyPropertyService.GetName(treeNodeProvider.GetParent(element)) }");
                Debug.WriteLine("!!!!!");
            }

            Debug.WriteLine(new String(' ', level) + element.GetType().Name + "#" + dependencyPropertyService.GetName(element));
            var children = treeNodeProvider.GetChildren(element);

            foreach (var child in children)
            {
                Recursive(treeNodeProvider, dependencyPropertyService, child, level + 1, element);
            }
        }
Пример #2
0
        private void Recursive(TDependencyObject element, int level, TDependencyObject expectedParent)
        {
            if (element == null)
            {
                return;
            }

            if (expectedParent != treeNodeProvider.GetParent(element))
            {
                Debug.WriteLine("!!!!!");
                Debug.WriteLine($"Expected parent: { dependencyPropertyService.GetName(expectedParent) }");
                Debug.WriteLine($"Actual parent:   { dependencyPropertyService.GetName(treeNodeProvider.GetParent(element)) }");
                Debug.WriteLine("!!!!!");
            }

            Debug.WriteLine(new String(' ', level) + element.GetType().Name + "#" + dependencyPropertyService.GetName(element));
            var children = treeNodeProvider.GetChildren(element);

            foreach (var child in children)
            {
                Recursive(child, level + 1, element);
            }
        }
Пример #3
0
        public static void Recursive <TDependencyObject, TStyle, TDependencyProperty>(
            this ITreeNodeProvider <TDependencyObject, TDependencyProperty> treeNodeProvider,
            IDependencyPropertyService <TDependencyObject, TStyle, TDependencyProperty> dependencyPropertyService,
            TDependencyObject element,
            int level,
            TDependencyObject expectedParent,
            SelectorType type
            )
            where TDependencyObject : class
            where TStyle : class
            where TDependencyProperty : class
        {
            if (element == null)
            {
                return;
            }

            var providerParent = treeNodeProvider.GetParent(element, type);

            if (expectedParent != providerParent)
            {
                Debug.WriteLine($"!!!!! element: '{element.ToString()}'");
                Debug.WriteLine($"Expected parent: { dependencyPropertyService.GetName(expectedParent) } {expectedParent.GetType().Name} '{expectedParent.ToString()}'");

                Debug.WriteLine($"Provider parent:   { (providerParent != null ? dependencyPropertyService.GetName(providerParent) : "NULL!") } {(providerParent != null ? treeNodeProvider.GetParent(element, type).GetType().Name : "NULL!")}");
                Debug.WriteLine("!!!!!");
            }

            Debug.WriteLine(new String(' ', level * 2) + element.GetType().Name + "#" + dependencyPropertyService.GetName(element));
            var children = treeNodeProvider.GetChildren(element, type);

            foreach (var child in children)
            {
                Recursive(treeNodeProvider, dependencyPropertyService, child, level + 1, element, type);
            }
        }