private void InitTOC()
        {
            //Initialize TOC
            Tree = new TOCNodeTree(AppDataUtil.Instance.GetCurPublicationTocRootNode());

            if (AppDataUtil.Instance.GetOpendTOC() != null)
            {
                LatestOpendTOCNode = AppDataUtil.Instance.GetOpendTOC().ParentNode;
            }
            else
            {
                var firstNonPageTOCNode = Tree.GetFirstPageNode().ParentNode;
                LatestOpendTOCNode = firstNonPageTOCNode.ParentNode == null ? firstNonPageTOCNode : firstNonPageTOCNode.ParentNode;
            }
            DisplayedTocList = Tree.GetDisplayTOCNodeList(LatestOpendTOCNode);
            if (AppDataUtil.Instance.GetOpendTOC() == null)
            {
                HighlightedTOCNode = Tree.GetFirstPageNode().ParentNode;
                SetDisplayedTOC(Tree.GetFirstPageNode());
            }
            else
            {
                HighlightedTOCNode = AppDataUtil.Instance.GetOpendTOC();
                SetDisplayedTOC(HighlightedTOCNode);
            }
        }
        public TableOfContentTableViewSource(TOCNode root)
        {
            Tree = new TOCNodeTree(root);

            if (AppDataUtil.Instance.GetOpendTOC() != null)
            {
                LatestOpendTOCNode = AppDataUtil.Instance.GetOpendTOC().ParentNode;
            }
            else
            {
                var firstNonPageTOCNode = Tree.GetFirstPageNode().ParentNode;
                LatestOpendTOCNode = firstNonPageTOCNode.ParentNode == null ? firstNonPageTOCNode : firstNonPageTOCNode.ParentNode;
            }
            DisplayedTocList = Tree.GetDisplayTOCNodeList(LatestOpendTOCNode);


            if (AppDataUtil.Instance.GetOpendTOC() == null)
            {
                HighlightedTOCNode = Tree.GetFirstPageNode().ParentNode;
                SetDisplayedTOC(Tree.GetFirstPageNode());
            }
            else
            {
                HighlightedTOCNode = AppDataUtil.Instance.GetOpendTOC();
                SetDisplayedTOC(HighlightedTOCNode);
            }

            AppDataUtil.Instance.SetHighlightedTOCNode(HighlightedTOCNode);
        }