private static void OnLoadDetectionChanged(DependencyObject dpo, DependencyPropertyChangedEventArgs ev) { if ((bool)ev.NewValue == true) { SubTreeAdded?.Invoke(dpo, new EventArgs()); if (dpo is FrameworkElement) { (dpo as FrameworkElement).Loaded += LoadedEventHandler; } else if (dpo is FrameworkContentElement) { (dpo as FrameworkContentElement).Loaded += LoadedEventHandler; } Css.instance.UpdateElement(dpo); } else { SubTreeRemoved?.Invoke(dpo, new EventArgs()); if (dpo is FrameworkElement) { (dpo as FrameworkElement).Loaded -= LoadedEventHandler; } else if (dpo is FrameworkContentElement) { (dpo as FrameworkContentElement).Loaded -= LoadedEventHandler; } Css.instance.UnapplyMatchingStyles(dpo, null); } }
private static void RemoveChildInternal(Element element) { if (CanUnattachChild(element)) { UnattachedChild(element); SubTreeRemoved?.Invoke(element, new EventArgs()); } }
private static void LoadedDetectionHelper_Unloaded(object sender, RoutedEventArgs e) { Debug.WriteLine("Removed (LoadedDetectionHelper_Unloaded)"); // (sender as FrameworkElement).Unloaded -= LoadedDetectionHelper_Unloaded; Css.instance?.UnapplyMatchingStyles(sender as FrameworkElement, null); SubTreeRemoved?.Invoke(sender, new EventArgs()); }
private static void OnLoadDetectionChanged(DependencyObject dpo, DependencyPropertyChangedEventArgs ev) { if ((dpo is TextBlock t) && t.Name == MarkupExtensionParser.MarkupParserHelperId) { return; } if ((bool)ev.NewValue == true) { SubTreeAdded?.Invoke(dpo, new EventArgs()); if (dpo is FrameworkElement) { (dpo as FrameworkElement).Loaded += LoadedEventHandler; } else if (dpo is FrameworkContentElement) { (dpo as FrameworkContentElement).Loaded += LoadedEventHandler; } } else { SubTreeRemoved?.Invoke(dpo, new EventArgs()); if (dpo is FrameworkElement) { (dpo as FrameworkElement).Loaded -= LoadedEventHandler; } else if (dpo is FrameworkContentElement) { (dpo as FrameworkContentElement).Loaded -= LoadedEventHandler; } Css.instance?.UnapplyMatchingStyles(dpo, null); } }
private static void LoadedDetectionHelper_Unloaded(object sender, RoutedEventArgs e) { SubTreeRemoved?.Invoke(sender, new EventArgs()); Css.instance?.RemoveElement(sender as DependencyObject); }