Пример #1
0
 private void HandleTileColorChanged(MetroTileColor metroTileColor)
 {
     if (!IsLoaded)
     {
         return;
     }
     Background = MetroTileFrame.GetBackgroundBrushFromTileColor(TileColor);
 }
Пример #2
0
        /// <summary>
        /// Overriding to setup state.
        /// </summary>
        public override void OnApplyTemplate()
        {
            base.OnApplyTemplate();

            if (BackgroundProperty.IsUnsetValue(this))
            {
                Background = MetroTileFrame.GetBackgroundBrushFromTileColor(TileColor);
            }

            if (CommandParameterProperty.IsUnsetValue(this))
            {
                CommandParameter = this;
            }

            SetWidth(Type);

            var scaleTransform = GetTemplateChild("ScaleTransform") as ScaleTransform;

            if (scaleTransform != null)
            {
                scaleTransform.Bind(ScaleTransform.CenterXProperty, this, ActualWidthProperty, BindingMode.OneWay, _MultiplicationConverter, 0.5);
                scaleTransform.Bind(ScaleTransform.CenterYProperty, this, ActualHeightProperty, BindingMode.OneWay, _MultiplicationConverter, 0.5);
            }

            var content3d = GetTemplateChild("Content3D") as Content3D;

            if (content3d != null)
            {
                var transform = GetTemplateChild("RotateRightInwards") as RotateTransform3D;
                if (transform != null)
                {
                    transform.Bind(RotateTransform3D.CenterXProperty, content3d, Content3D.ThreeDBoundsXProperty);
                }
                transform = GetTemplateChild("RotateLeftInwards") as RotateTransform3D;
                if (transform != null)
                {
                    transform.Bind(RotateTransform3D.CenterXProperty, content3d, Content3D.ThreeDBoundsXProperty, BindingMode.OneWay, _MultiplicationConverter, -1);
                }
                transform = GetTemplateChild("RotateTopInwards") as RotateTransform3D;
                if (transform != null)
                {
                    transform.Bind(RotateTransform3D.CenterYProperty, content3d, Content3D.ThreeDBoundsYProperty);
                }
                transform = GetTemplateChild("RotateBottomInwards") as RotateTransform3D;
                if (transform != null)
                {
                    transform.Bind(RotateTransform3D.CenterYProperty, content3d, Content3D.ThreeDBoundsYProperty, BindingMode.OneWay, _MultiplicationConverter, -1);
                }
            }

            _FramesPresenter = GetTemplateChild("FramesPresenter") as MetroTileFramesPresenter;
            if (_FramesPresenter != null)
            {
                this.Bind(HasFramesProperty, _FramesPresenter, "HasItems");
            }
        }
Пример #3
0
        /// <summary>
        /// Virtual method called to animate the transition between frames.
        /// </summary>
        protected virtual void AnimateTransition(MetroTileFrame currentFrame, MetroTileFrame nextFrame)
        {
            if (_TransitionAnimation == null)
            {
                _TransitionAnimation = CreateTransitionAnimation();
            }

            Storyboard.SetTarget(_TransitionAnimation.Children[0], currentFrame);
            Storyboard.SetTarget(_TransitionAnimation.Children[1], nextFrame);

            _TransitionAnimation.Begin();
        }
Пример #4
0
        /// <summary>
        /// Overriding to setup state.
        /// </summary>
        protected override void PrepareContainerForItemOverride(DependencyObject element, object item)
        {
            base.PrepareContainerForItemOverride(element, item);

            var frame = (MetroTileFrame)element;
            var translateTransform = frame.GetTransform <TranslateTransform>(true);

            if (_CurrentFrame == null)
            {
                _CurrentFrame = frame;
            }
            else
            {
                translateTransform.Bind(TranslateTransform.YProperty, this, "ActualHeight");
            }
        }
Пример #5
0
        private void HandleTimerTick(object sender, EventArgs e)
        {
            var nextFrameIndex = ItemContainerGenerator.IndexFromContainer(_CurrentFrame) + 1;

            if (nextFrameIndex >= Items.Count)
            {
                nextFrameIndex = 0;
            }

            var nextFrame = (MetroTileFrame)ItemContainerGenerator.ContainerFromIndex(nextFrameIndex);

            AnimateTransition(_CurrentFrame, nextFrame);
            _CurrentFrame = nextFrame;

            StartTimerForCurrentFrame();
        }