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); }
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); }
/// <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); }
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); }