/// <summary>
        /// Initialises the view model, user interface and data binding from the view model
        /// to the interface.
        /// </summary>
        public MainWindow()
        {
            InitializeComponent();

            generationViewModel = new GenerationViewModel(
                ConwaysGameOfLife.Properties.Settings.Default.UniverseSize
            );

            BuildGridUI(generationViewModel);

            DataContext = generationViewModel;
        }
        /// <summary>
        /// Builds the game of life user interface.
        /// </summary>
        /// <param name="generationViewModel">Generation view model.</param>
        private void BuildGridUI(GenerationViewModel generationViewModel)
        {
            for (int row = 0; row < generationViewModel.UniverseSize; row++)
            {
                UniverseGrid.RowDefinitions.Add(new RowDefinition());

                for (int column = 0; column < generationViewModel.UniverseSize; column++)
                {
                    if (row == 0)
                        UniverseGrid.ColumnDefinitions.Add(new ColumnDefinition());

                    // Let's use a TextBlock to visually represent a cell
                    TextBlock cellTextBlock = CreateCellTextBlock(generationViewModel.GetCell(row, column));

                    // Position the "cell" in the grid
                    Grid.SetRow(cellTextBlock, row);
                    Grid.SetColumn(cellTextBlock, column);

                    UniverseGrid.Children.Add(cellTextBlock);
                }
            }
        }