private void LayoutEditor_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.LeftCtrl || e.Key == Key.RightCtrl)
            {
                m_IsCtrlDown = true;
            }

            if (m_IsSelected)
            {
                if (e.Key == Key.Up)
                {
                    PushCommandToHistory(new MoveCommand(m_SelectedElement));
                    Canvas.SetTop(m_SelectedElement, Canvas.GetTop(m_SelectedElement) - 1);
                    e.Handled = true;
                }
                else if (e.Key == Key.Down)
                {
                    PushCommandToHistory(new MoveCommand(m_SelectedElement));
                    Canvas.SetTop(m_SelectedElement, Canvas.GetTop(m_SelectedElement) + 1);
                    e.Handled = true;
                }
                else if (e.Key == Key.Left)
                {
                    PushCommandToHistory(new MoveCommand(m_SelectedElement));
                    Canvas.SetLeft(m_SelectedElement, Canvas.GetLeft(m_SelectedElement) - 1);
                    e.Handled = true;
                }
                else if (e.Key == Key.Right)
                {
                    PushCommandToHistory(new MoveCommand(m_SelectedElement));
                    Canvas.SetLeft(m_SelectedElement, Canvas.GetLeft(m_SelectedElement) + 1);
                    e.Handled = true;
                }
                else if (e.Key == Key.Delete)
                {
                    if (MessageBox.Show("Delete slected item?", "", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
                    {
                        PushCommandToHistory(new RemoveCommand(this, m_SelectedElement));

                        RemoveCanvasElement(m_SelectedElement);

                        e.Handled = true;
                    }
                }
                else if (m_IsCtrlDown && e.Key == Key.C)
                {
                    m_CopiedElement = m_SelectedElement;
                }
            }

            if (m_IsCtrlDown && e.Key == Key.V && m_CopiedElement != null)
            {
                PasteNewUIElement(m_CopiedElement);
            }

            if (m_IsCtrlDown && e.Key == Key.Z /*&& m_SelectedElement != null*/ && ActionHistory.HasUndo)
            {
                var command = ActionHistory.Pop();
                command.Undo();

                if (command is RemoveCommand)
                {
                    m_SelectedElement = ((RemoveCommand)command).UIElement;
                }
            }

            if (m_IsCtrlDown && e.Key == Key.Y /*&& m_SelectedElement != null*/ && ActionHistory.HasRedo)
            {
                //MessageBox.Show("Not implemented!", "Notice", MessageBoxButton.OK, MessageBoxImage.Asterisk);

                var command = ActionHistory.Redo();
                command.Undo();

                if (command is RemoveCommand)
                {
                    m_SelectedElement = ((RemoveCommand)command).UIElement;
                }
            }
        }