Esempio n. 1
0
        private void OnSelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> args)
        {
            OutlineTreeViewItem item = (OutlineTreeViewItem)args.NewValue;

            if (args.Handled != true && item != null && item.Destination != null && controller.IsOpen)//that can happen when its not loaded yet and its only a stub
            {
                controller.SetDestination(item.Destination);
                args.Handled = true;
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Add the outlineItems from enumerator-List to the parent
        /// </summary>
        /// <param name="parent"></param>
        /// <param name="enumerator"></param>
        /// <returns>Whether the enumerator has reached the end of the collection</returns>
        private bool recursivelyAddOutlines(ItemsControl parent, IEnumerator <PdfOutlineItem> enumerator)
        {
            PdfOutlineItem outlineItem;

            while (true)
            {
                outlineItem = enumerator.Current;
                OutlineTreeViewItem treeViewItem = new OutlineTreeViewItem(outlineItem, controller);
                parent.Items.Add(treeViewItem);

                if (!enumerator.MoveNext())
                {
                    return(true);
                }
                if (outlineItem.descendants)
                {
                    if (enumerator.Current.level <= outlineItem.level)
                    {
                        //the child is not loaded yet. insert a stub
                        treeViewItem.Items.Add(new OutlineTreeViewItem(controller));
                    }
                    else
                    {
                        treeViewItem.ExpandSubtree();
                        if (recursivelyAddOutlines(treeViewItem, enumerator))
                        {
                            return(true);
                        }
                    }
                }

                if (enumerator.Current.level < outlineItem.level)
                {
                    return(false);
                }
            }
        }