示例#1
0
        public static VisualizationNode ToTree(IEnumerable <XamlInstruction> xamlNodes)
        {
            var enumerator = xamlNodes.GetEnumerator();

            var stack = new Stack <VisualizationNode>();

            stack.Push(new VisualizationNode("Root"));

            while (enumerator.MoveNext())
            {
                var current = enumerator.Current;

                if (LowersLevel(current))
                {
                    stack.Pop();
                }
                else
                {
                    var item = new VisualizationNode(current);
                    stack.Peek().Children.Add(item);

                    if (RaisesLevel(current))
                    {
                        stack.Push(item);
                    }
                }
            }

            return(stack.Peek());
        }
示例#2
0
        public static VisualizationNode ToTree(IEnumerable<XamlNode> xamlNodes)
        {
            var enumerator = xamlNodes.GetEnumerator();

            var stack = new Stack<VisualizationNode>();
            stack.Push(new VisualizationNode("Root"));

            while (enumerator.MoveNext())
            {
                var current = enumerator.Current;

                if (LowersLevel(current))
                {
                    stack.Pop();
                }
                else
                {
                    var item = new VisualizationNode(current);
                    stack.Peek().Children.Add(item);

                    if (RaisesLevel(current))
                    {
                        stack.Push(item);
                    }
                }
            }

            return stack.Peek();
        }
        public VisualizerNodeViewModel(VisualizationNode model)
        {
            this.model = model;
            this.IsExpanded = true;
            children = model.Children.Select(node => new VisualizerNodeViewModel(node)).ToList();

            CollapseBranchCommand = new RelayCommand(o => CollapseChildren());
            ExpandBranchCommand = new RelayCommand(o => ExpandChildren());
        }
        private static string GetMemberName(VisualizationNode visualizationNode)
        {
            var mutableXamlMember = visualizationNode.XamlNode.Member as MutableXamlMember;

            if (mutableXamlMember != null)
            {
                if (!mutableXamlMember.IsAttachable)
                {
                    return mutableXamlMember.Name;
                }

                return mutableXamlMember.DeclaringType.Name + "." + mutableXamlMember.Name;
            }

            var member = visualizationNode.XamlNode.Member;

            return member.IsDirective ? "[(" + member.Name + ") Directive]": member.Name;
        }
        private string GetName(VisualizationNode visualizationNode)
        {
            switch (NodeType)
            {
                case NodeType.Member:
                    return GetMemberName(visualizationNode);

                case NodeType.Object:
                    return visualizationNode.XamlNode.XamlType.Name;

                case NodeType.GetObject:
                    return "Collection";

                case NodeType.NamespaceDeclaration:
                    return "Namespace Declaration: Mapping " + visualizationNode.XamlNode.NamespaceDeclaration;

                case NodeType.Value:
                    return $"\"{visualizationNode.XamlNode.Value}\"";

                case NodeType.Root:
                    return "Root";
            }

            throw new InvalidOperationException("The node type {NodeType} cannot be handled.");
        }
示例#6
0
 private static void OpenTreeVisualizer(VisualizationNode root)
 {
     var visualizerWindow = new TreeVisualizerWindow { DataContext = new TreeVisualizerViewModel(root) };
     visualizerWindow.Show();
 }
 public TreeVisualizerViewModel(VisualizationNode root)
 {
     Nodes = new Collection<VisualizerNodeViewModel> { new VisualizerNodeViewModel(root) };
 }