private void OnParentChanged(object instance, object key, DependencyObjectParentChangedEventArgs args) { var list = GetTemplatePool(key as FrameworkTemplate); if (args.NewParent == null) { if (list == null) { list = GetTemplatePool(key as FrameworkTemplate); } if (_trace.IsEnabled) { _trace.WriteEventActivity(TraceProvider.RecycleTemplate, EventOpcode.Send, new[] { instance.GetType().ToString() }); } PropagateOnTemplateReused(instance); list.Add(new TemplateEntry(_watch.Elapsed, instance as View)); if (this.Log().IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug)) { (this).Log().Debug($"Caching template, id={GetTemplateDebugId(key as FrameworkTemplate)}, {list.Count} items now in cache"); } } else { var index = list.FindIndex(e => ReferenceEquals(e.Control, instance)); if (index != -1) { list.RemoveAt(index); } } }
private static void RenderTransformOnParentChanged(object dependencyObject, object _, DependencyObjectParentChangedEventArgs args) => ((UIElement)dependencyObject)._renderTransform?.UpdateParent(args.PreviousParent, args.NewParent);
private void OnParentChanged(object instance, object key, DependencyObjectParentChangedEventArgs args) { RefreshStateTriggers(force: true); }