Mini Kabibi Habibi

Current Path : C:/Users/Public/Documents/DXperience 13.1 Demos/WPF/CS/CarouselDemo.Wpf/Modules/
Upload File :
Current File : C:/Users/Public/Documents/DXperience 13.1 Demos/WPF/CS/CarouselDemo.Wpf/Modules/MovingPath.xaml.cs

using System.Windows;
using System.Windows.Input;
using System.Windows.Controls.Primitives;
using DevExpress.Xpf.DemoBase;
using System.Windows.Controls;
using DevExpress.Xpf.Carousel;
using System.Windows.Media;
using System.Windows.Markup;
using System.Windows.Data;
using System;
using DevExpress.Xpf.Editors;

namespace CarouselDemo {
    public partial class MovingPath : CarouselDemoModule {
        public MovingPath() {
            InitializeComponent();
            AddItems(@"/CarouselDemo;component/Data/Images/Logos", ItemType.BinaryImage, carousel);
            paddingTopSlider.EditValueChanged += TrackBarValueChanged; ;
            paddingBottomSlider.EditValueChanged += TrackBarValueChanged;
            paddingLeftSlider.EditValueChanged += TrackBarValueChanged;
            paddingRightSlider.EditValueChanged += TrackBarValueChanged;
            carousel.Loaded += new RoutedEventHandler(carousel_Loaded);
        }
        void carousel_Loaded(object sender, RoutedEventArgs e) {
            paddingLineVisualizer.InvalidateVisual();
        }
        void TrackBarValueChanged(object sender, EditValueChangedEventArgs e) {
            paddingLineVisualizer.InvalidateVisual();
        }
    }
    public class LineVisualizer : Grid {
        public static readonly DependencyProperty CarouselProperty;
        static LineVisualizer() {
            CarouselProperty = DependencyProperty.Register("Carousel", typeof(CarouselPanel), typeof(LineVisualizer), new FrameworkPropertyMetadata(null));
        }
        public CarouselPanel Carousel {
            get { return (CarouselPanel)GetValue(CarouselProperty); }
            set { SetValue(CarouselProperty, value); }
        }
        protected override void OnRender(DrawingContext dc) {
            base.OnRender(dc);
            if (Carousel != null) {
                Pen pen = new Pen(Brushes.Gray, 1d);
                dc.DrawLine(pen, new Point(0, Carousel.PathPadding.Top / 100d * Carousel.ActualHeight), new Point(Carousel.ActualWidth, Carousel.PathPadding.Top / 100d * Carousel.ActualHeight));
                dc.DrawLine(pen, new Point(0, (1d - Carousel.PathPadding.Bottom / 100d) * Carousel.ActualHeight), new Point(Carousel.ActualWidth, (1d - Carousel.PathPadding.Bottom / 100d) * Carousel.ActualHeight));
                dc.DrawLine(pen, new Point(Carousel.PathPadding.Left / 100d * Carousel.ActualWidth, 0), new Point(Carousel.PathPadding.Left / 100d * Carousel.ActualWidth, ActualHeight));
                dc.DrawLine(pen, new Point((1d - Carousel.PathPadding.Right / 100d) * Carousel.ActualWidth, 0), new Point((1d - Carousel.PathPadding.Right / 100d) * Carousel.ActualWidth, ActualHeight));
            }
        }
    }
    public class PaddingConverter : MarkupExtension, IMultiValueConverter {
        public override object ProvideValue(IServiceProvider serviceProvider) {
            return this;
        }
        #region IMultiValueConverter Members
        object IMultiValueConverter.Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture) {
            return new Thickness((double)values[0], (double)values[1], (double)values[2], (double)values[3]);
        }
        object[] IMultiValueConverter.ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture) {
            throw new NotImplementedException();
        }
        #endregion
    }
}