예제 #1
0
        private TreeDataTemplate GetTreeDataTemplate(object item)
        {
            DataTemplate template = this.Owner.FindDataTemplate(item);

            if (template == null)
            {
                template = DataTemplate.Default;
            }

            TreeDataTemplate treeTemplate = template as TreeDataTemplate;

            if (treeTemplate == null)
            {
                treeTemplate = new TreeDataTemplate(template.Build, x => null);
            }

            return(treeTemplate);
        }
예제 #2
0
        protected override Control CreateContainerOverride(object item)
        {
            T result = item as T;

            if (result == null)
            {
                TreeDataTemplate template = this.GetTreeDataTemplate(item);

                result = new T
                {
                    Header     = template.Build(item),
                    Items      = template.ItemsSelector(item),
                    IsExpanded = template.IsExpanded(item),
                };
            }

            return(result);
        }
예제 #3
0
        /// <summary>
        /// Gets the data template for the specified item.
        /// </summary>
        /// <param name="item">The item.</param>
        /// <returns>The template.</returns>
        private ITreeDataTemplate GetTreeDataTemplate(object item)
        {
            IDataTemplate template = Owner.FindDataTemplate(item);

            if (template == null)
            {
                template = DataTemplate.Default;
            }

            var treeTemplate = template as ITreeDataTemplate;

            if (treeTemplate == null)
            {
                treeTemplate = new TreeDataTemplate(typeof(object), template.Build, x => null);
            }

            return(treeTemplate);
        }
예제 #4
0
        protected override Control CreateContainerOverride(object item)
        {
            T result = item as T;

            if (result == null)
            {
                TreeDataTemplate template = this.GetTreeDataTemplate(item);

                System.Diagnostics.Debug.WriteLine("{0} created item for {1}", this.GetHashCode(), item);

                result = new T
                {
                    Header     = template.Build(item),
                    Items      = template.ItemsSelector(item),
                    IsExpanded = template.IsExpanded(item),
                };
            }

            return(result);
        }
        /// <summary>
        ///  Appies the binding to the breadcrumb item.
        /// </summary>
        public void ApplyBinding()
        {
            object item = DataContext;

            if (item == null)
            {
                return;
            }

            BreadcrumbItem root     = this;
            IDataTemplate  template = HeaderTemplate;

            //DataTemplateSelector templateSelector = HeaderTemplateSelector;
            //if (templateSelector != null)
            //{
            //    template = templateSelector.SelectTemplate(item, root);
            //}
            if (template == null)
            {
                //DataTemplateKey key = GetResourceKey(item);
                //if (key != null)
                //{
                //    this.TryFindResource(key, template);
                //}
            }

            root.SelectedItem = null;

            TreeDataTemplate hdt = template as TreeDataTemplate;

            if (template != null)
            {
                //root.Header = template.LoadContent();
            }
            else
            {
                root.Header = item;
            }
            root.DataContext = item;

            if (hdt != null)
            {
                // bind the Items to the hierarchical data template:
                root.Bind(BreadcrumbItem.ItemsProperty, hdt.ItemsSource);
            }

            BreadcrumbBar bar = BreadcrumbBar;

            if (bar != null)
            {
                if (TraceBinding == null)
                {
                    TraceBinding = bar.TraceBinding;
                }
                if (ImageBinding == null)
                {
                    ImageBinding = bar.ImageBinding;
                }
            }

            if (TraceBinding != null)
            {
                root.Bind(BreadcrumbItem.TraceProperty, TraceBinding);
            }
            if (ImageBinding != null)
            {
                root.Bind(BreadcrumbItem.ImageProperty, ImageBinding);
            }

            ApplyProperties(item);
        }