Example #1
0
        private static void SetActive(FluidGridViewTriggerCollection triggers, WrapGridReference reference)
        {
            if (triggers.Owner.ItemsPanelRoot == null || reference == null)
            {
                return;
            }

            var owner = triggers.Owner;

            //var paddingNear = reference.Orientation == Orientation.Horizontal
            //    ? owner.Padding.Left
            //    : owner.Padding.Top;

            //var paddingFar = reference.Orientation == Orientation.Horizontal
            //    ? owner.Padding.Right
            //    : owner.Padding.Bottom;

            var parentLength = reference.Orientation == Orientation.Horizontal
                ? owner.ItemsPanelRoot.ActualWidth
                : owner.ItemsPanelRoot.ActualHeight;

            FluidGridViewTriggerBase trigger = null;

            foreach (var child in triggers)
            {
                if (child.MaybeActive(parentLength))
                {
                    trigger = child;
                }
            }

            if (trigger != null)
            {
                //var itemLength = trigger.GetItemLength(parentLength - paddingNear - paddingFar);
                var itemLength = trigger.GetItemLength(parentLength);

                if (reference.Orientation == Orientation.Horizontal)
                {
                    reference.ItemWidth = itemLength;
                }
                else
                {
                    reference.ItemHeight = itemLength;
                }

                var orientationOnly = GetOrientationOnly(owner);
                if (!orientationOnly)
                {
                    if (reference.Orientation == Orientation.Horizontal)
                    {
                        reference.ItemHeight = itemLength;
                    }
                    else
                    {
                        reference.ItemWidth = itemLength;
                    }
                }
            }
        }
        private static WrapGridReference GetReference(DependencyObject obj)
        {
            var sender = obj as ItemsControl;
            var value  = (WrapGridReference)obj.GetValue(ReferenceProperty);

            if (value == null)
            {
                value = new WrapGridReference(sender.ItemsPanelRoot);
                obj.SetValue(ReferenceProperty, value);
            }

            return(value);
        }
 private static void SetReference(DependencyObject obj, WrapGridReference value)
 {
     obj.SetValue(ReferenceProperty, value);
 }