private TreeNode GetNodeFilter(TreeList tree, TreeNode node, string path)
        {
            var obj = node.Tag as CloudItem;

            if (obj == null || obj.data != null)
            {
                return(null);
            }
            if (path == obj.fullpath)
            {
                return(node);
            }
            if (path.StartsWith(obj.fullpath))
            {
                TreeCloud.SetIsExpanded(node, true);
                if (node.Children == null)
                {
                    return(null);
                }
                foreach (var child in node.Children)
                {
                    var result = GetNodeFilter(tree, child, path);
                    if (result != null)
                    {
                        return(result);
                    }
                }
            }
            return(null);
        }
        private void UpdateTree(string path)
        {
            TreeCloud.Model = new CloudItem("", "root");
            var node_matching = GetNodeRoot(TreeCloud, path);

            if (node_matching == null)
            {
                // Set the root expanded
                TreeCloud.SetIsExpanded(TreeCloud.Nodes.First(), true);
            }
            else
            {
                // Investigate why this doesn't work half of the time... it doesn't scroll enough
                TreeCloud.UpdateLayout();
                TreeCloud.ScrollIntoView(node_matching);
                TreeCloud.SetIsExpanded(node_matching, true);
            }
        }