public MultiplayerOpeningView(IGameInfo game)
        {
            StackLayout tempStack;
            StackLayout mainStack = new StackLayout();

            mainStack.Margin = new Thickness(5);
            _game            = game;

            if (_game.CanHaveExtraComputerPlayers)
            {
                tempStack = new StackLayout();
                tempStack.SetName(nameof(IMultiplayerOpeningViewModel.ExtraOptionsVisible));
                LoadPlayerOptions(EnumPlayOptions.ComputerExtra, tempStack);
                mainStack.Children.Add(tempStack);
            }
            //if bindings cannot be reused, then requires rethinking (?)
            Button button;
            string singleText;

            singleText = nameof(IMultiplayerOpeningViewModel.CanShowSingleOptions);
            if (_game.MinPlayers == 2)
            {
                button = PrivateGetButton("Start Game With No Extra Players.", nameof(IMultiplayerOpeningViewModel.StartAsync));
                button.CommandParameter = 0;
                button.SetBinding(IsVisibleProperty, GetHostBinding);
                mainStack.Children.Add(button);
            }
            button = PrivateGetButton("Auto Resume Networked Game", nameof(IMultiplayerOpeningViewModel.ResumeMultiplayerGameAsync));
            button.SetBinding(IsVisibleProperty, GetHostBinding);
            mainStack.Children.Add(button);
            button = PrivateGetButton("Auto Resume Local Game", nameof(IMultiplayerOpeningViewModel.ResumeSinglePlayerAsync));
            mainStack.Children.Add(button);
            bool canHuman;
            bool canComputer;

            canHuman    = OpenPlayersHelper.CanHuman(_game);
            canComputer = OpenPlayersHelper.CanComputer(_game);
            if (canHuman && canComputer)
            {
                Grid tempgrid = new Grid();
                AddLeftOverColumn(tempgrid, 1);
                AddLeftOverColumn(tempgrid, 1);
                tempStack = new StackLayout();
                tempStack.SetName(singleText);
                AddControlToGrid(tempgrid, tempStack, 0, 0);
                LoadPlayerOptions(EnumPlayOptions.ComputerLocal, tempStack);
                tempStack = new StackLayout();
                tempStack.SetName(singleText);
                AddControlToGrid(tempgrid, tempStack, 0, 1);
                LoadPlayerOptions(EnumPlayOptions.HumanLocal, tempStack);
                mainStack.Children.Add(tempgrid);
            }
            else if (canHuman)
            {
                tempStack = new StackLayout();
                tempStack.SetName(singleText);
                LoadPlayerOptions(EnumPlayOptions.HumanLocal, tempStack);
                mainStack.Children.Add(tempStack);
            }
            else if (canComputer)
            {
                tempStack = new StackLayout();
                tempStack.SetName(singleText);
                LoadPlayerOptions(EnumPlayOptions.ComputerLocal, tempStack);
                mainStack.Children.Add(tempStack);
            }
            else if (_game.SinglePlayerChoice == EnumPlayerChoices.Solitaire)
            {
                tempStack = new StackLayout();
                tempStack.SetName(singleText);
                LoadPlayerOptions(EnumPlayOptions.Solitaire, tempStack);
                mainStack.Children.Add(tempStack);
            }
            button = PrivateGetButton("Start Network Game (Host)", nameof(IMultiplayerOpeningViewModel.HostAsync));
            mainStack.Children.Add(button);
            button = PrivateGetButton("Join Network Game", nameof(IMultiplayerOpeningViewModel.ConnectAsync));
            mainStack.Children.Add(button);
            button = PrivateGetButton("Cancel Selection", nameof(IMultiplayerOpeningViewModel.CancelConnectionAsync));
            mainStack.Children.Add(button);
            tempStack = new StackLayout();
            tempStack.SetName(nameof(IMultiplayerOpeningViewModel.HostCanStart));
            SimpleLabelGridXF playerInfo = new SimpleLabelGridXF();

            playerInfo.AddRow("Players Connected", nameof(IMultiplayerOpeningViewModel.ClientsConnected));
            playerInfo.AddRow("Previous Players", nameof(IMultiplayerOpeningViewModel.PreviousNonComputerNetworkedPlayers));
            tempStack.Children.Add(playerInfo.GetContent);
            mainStack.Children.Add(tempStack);
            Content = mainStack;
        }