/// <summary>
        /// Constructor of interaction logic for MainWindow.xaml
        /// </summary>
        public MainWindow()
        {
            InitializeComponent();
            Mediator = new ModelViewMediator(this);

            ControlModelView controlNotifiableModelView = new ControlModelView(Mediator);

            this.InfoControl.DataContext = controlNotifiableModelView;

            PaintModelView paintNotifiableModelView = new PaintModelView(Mediator, this);

            this.PaintControl.DataContext   = paintNotifiableModelView;
            this.GridLowerPanel.DataContext = paintNotifiableModelView;

            MenuModelView menuNotifiableModelView = new MenuModelView(Mediator, this);

            this.MenuControl.DataContext = menuNotifiableModelView;

            this.Mediator.Initialize();

            this.RenderingProvider = new RenderProvider(
                new RenderFactory(this),
                this.Mediator.AppSettings.DefaultRenderMode);

            this.RegisterDepencencyMapping();
        }
        /// <summary>
        /// Called when the the tack bar thumb is moved
        /// </summary>
        private void OnThumbDragCompleted()
        {
            ControlModelView notifiableModelView = this.InfoControl.DataContext as ControlModelView;

            if (notifiableModelView != null)
            {
                ICommand angleChangeCommand = notifiableModelView.AngleChangeCommand;
                if (angleChangeCommand.CanExecute(null))
                {
                    angleChangeCommand.Execute(null);
                }
            }
        }