/// <summary> /// When overridden in a derived class, undoes the effects of the /// PrepareContainerForItemOverride method. /// </summary> /// <param name="element">The container element.</param> /// <param name="item">The item.</param> protected override void ClearContainerForItemOverride(DependencyObject element, object item) { LongListSelectorItem itemTuple = item as LongListSelectorItem; if (itemTuple != null) { var result = ((FrameworkElement)element).GetFirstLogicalChildByType <ContentPresenter>(true); var handler = Unlink; if (result != null && handler != null) { handler(this, new LinkUnlinkEventArgs(result)); } } base.ClearContainerForItemOverride(element, item); }
/// <summary> /// Prepares the specified element to display the specified item. /// </summary> /// <param name="element">Element used to display the specified item.</param> /// <param name="item">Specified item.</param> protected override void PrepareContainerForItemOverride(DependencyObject element, object item) { base.PrepareContainerForItemOverride(element, item); DataTemplate template = null; LongListSelectorItem itemTuple = item as LongListSelectorItem; if (itemTuple != null) { switch (itemTuple.ItemType) { case LongListSelectorItemType.ListHeader: template = this.ListHeaderTemplate; break; case LongListSelectorItemType.ListFooter: template = this.ListFooterTemplate; break; case LongListSelectorItemType.GroupHeader: template = this.GroupHeaderTemplate; break; case LongListSelectorItemType.GroupFooter: template = this.GroupFooterTemplate; break; case LongListSelectorItemType.Item: template = this.ItemTemplate; break; } TemplatedListBoxItem listBoxItem = (TemplatedListBoxItem)element; listBoxItem.Content = itemTuple.Item; listBoxItem.Tuple = itemTuple; listBoxItem.ContentTemplate = template; var result = listBoxItem.GetFirstLogicalChildByType <ContentPresenter>(true); var handler = Link; if (result != null && handler != null) { handler(this, new LinkUnlinkEventArgs(result)); } } }