private static void OnChangedUseExtender(DependencyObject sender, DependencyPropertyChangedEventArgs e) { TreeViewItem item = sender as TreeViewItem; if (null != item) { if ((bool)e.NewValue) { if (item.ReadLocalValue(ItemExtenderProperty) == DependencyProperty.UnsetValue) { TVIExtender extender = new TVIExtender(item); item.SetValue(ItemExtenderProperty, extender); } } else { if (item.ReadLocalValue(ItemExtenderProperty) != DependencyProperty.UnsetValue) { TVIExtender extender = (TVIExtender)item.ReadLocalValue(ItemExtenderProperty); extender.Detach(); item.SetValue(ItemExtenderProperty, DependencyProperty.UnsetValue); } } } }