public MainWindow()
        {
            InitializeComponent();
            maze   = new Grid[MazeWidth, MazeHeight];
            maze1D = new List <Button>();

            //Initialise timer
            Stopwatch = new Stopwatch();

            mazeGenerator = new MazeGenerator(MazeWidth, MazeHeight);

            var verticalStackPanel = new StackPanel();

            verticalStackPanel.Orientation = Orientation.Vertical;

            for (int y = 0; y < MazeHeight; y++)
            {
                var horizontalStackPanel = new StackPanel();
                horizontalStackPanel.Orientation = Orientation.Horizontal;

                for (int x = 0; x < MazeWidth; x++)
                {
                    var button = new Grid();
                    button.Width             = 8;
                    button.Height            = 8;
                    button.PreviewMouseDown += Button_Click;
                    button.Background        = new SolidColorBrush(Colors.Black);
                    horizontalStackPanel.Children.Add(button);
                    maze[x, y] = button;
                }

                verticalStackPanel.Children.Add(horizontalStackPanel);
            }

            MainGrid.Children.Add(verticalStackPanel);

            mazeGenerator.generate();

            timer = new Timer(new TimerCallback((s) =>
            {
                try
                {
                    Dispatcher.Invoke(() => FillPathSquare());
                }
                catch
                {
                }
            }), null, 100, 1);
        }
        private void Regenerate(object sender, RoutedEventArgs e)
        {
            mazeGenerator = new MazeGenerator(MazeWidth, MazeHeight);
            mazeGenerator.generate();

            var mazeMap = mazeGenerator.GetMaze();

            for (int y = 0; y < MazeHeight; y++)
            {
                for (int x = 0; x < MazeWidth; x++)
                {
                    maze[x, y].Background = new SolidColorBrush(Colors.Black);
                }
            }

            currentDrawMazePosition = 0;
            drawMaze = true;
        }