public LayoutPathChildWrapper(FrameworkElement child, ChildAlignment alingment, Orientations orientation) { Content = child; DefaultStyleKey = typeof(LayoutPathChildWrapper); RenderTransform = Transform = new CompositeTransform(); Loaded += delegate { UpdateAlignment(alingment, orientation); }; }
internal void UpdateAlignment(ChildAlignment alignment, Orientations orientation) { if (ALIGNMENT == null) { return; } var translate = ALIGNMENT.RenderTransform as TranslateTransform; if (translate == null) { return; } if (alignment == ChildAlignment.Center) { translate.X = translate.Y = 0; } else { int flipValue = 1; if (orientation == Orientations.ToPathReversed || orientation == Orientations.VerticalReversed) { flipValue = -1; } var child = (FrameworkElement)Content; if (orientation == Orientations.ToPath || orientation == Orientations.ToPathReversed) { translate.X = 0; if (alignment == ChildAlignment.Outer) { translate.Y = child.ActualHeight * flipValue * -1 / 2.0; } else { translate.Y = child.ActualHeight * flipValue / 2.0; } } else { translate.Y = 0; if (alignment == ChildAlignment.Outer) { translate.X = child.ActualWidth * flipValue * -1 / 2.0; } else { translate.X = child.ActualWidth * flipValue / 2.0; } } } }
public override void Reset() { gameObject = null; childAlignment = ChildAlignment.UpperLeft; everyFrame = false; }