private void ExpandAllNodes(NodeTreeItem node, bool expand)
        {
            node.IsExpanded = expand;

            foreach (var nodeTreeItem in node.Children)
            {
                ExpandAllNodes(nodeTreeItem, expand);
            }
        }
        private NodeTreeItem FindNode(NodeTreeItem node, Node wantedNode)
        {
            if (node.Node == wantedNode)
            {
                return(node);
            }

            foreach (var nodeTreeItem in node.Children)
            {
                var foundNode = FindNode(nodeTreeItem, wantedNode);
                if (foundNode != null)
                {
                    return(foundNode);
                }
            }

            return(null);
        }
        private void SelectedItemChanged(NodeTreeItem selectNode)
        {
            if (selectNode == null)
            {
                return;
            }

            SelectedNode = FindNode(Nodes.First(), selectNode.Node);
            MessengerInstance.Send(new SelectedHierarchyNodeMesssage {
                SelectedNode = SelectedNode.Node
            });
            Attributes.Clear();
            foreach (var xAttribute in SelectedNode.Node.Element.Attributes())
            {
                Attributes.Add(new Attribute(xAttribute.Name.LocalName, xAttribute.Value));
            }

            SelectedNode.IsSelected = true;
            ExpandAllNodes(Nodes.First(), true);
        }