public static void PairExpanded(this TreeViewItem item, UIElement pairToObject, RoutedEvent pairToExpandEvent, RoutedEvent pairToCollapseEvent, DependencyProperty pairToProperty) { item.AddSelfExpanded((sender, args) => pairToObject.SetValue(pairToProperty, true)); item.AddSelfCollapsed((sender, args) => pairToObject.SetValue(pairToProperty, false)); pairToObject.SetValue(pairToProperty, item.IsExpanded); pairToObject.AddHandler(pairToExpandEvent, new RoutedEventHandler((sender, args) => item.IsExpanded = true)); pairToObject.AddHandler(pairToCollapseEvent, new RoutedEventHandler((sender, args) => item.IsExpanded = false)); }