示例#1
0
        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);
                }
            }
        }
示例#2
0
 private static void RenderTransformOnParentChanged(object dependencyObject, object _, DependencyObjectParentChangedEventArgs args)
 => ((UIElement)dependencyObject)._renderTransform?.UpdateParent(args.PreviousParent, args.NewParent);
示例#3
0
 private void OnParentChanged(object instance, object key, DependencyObjectParentChangedEventArgs args)
 {
     RefreshStateTriggers(force: true);
 }