Конструкторы MVVM с разными параметрами вызывают ViewModel - PullRequest
0 голосов
/ 18 ноября 2018

Я сижу с кодом MVVM, и все это работает независимо друг от друга, но я собираюсь соединить его вместе.

Проблема в том, что я не могу вызвать GameViewModel, что связано с различными параметрами в конструкторах.

Кажется, это простая проблема, но я не смог найти решение.

Игрок в казино (имена и монеты должны быть предоставлены игроку в блэкджек)

имя строки; int chips;

public Player(string n, int c)
{
    name = n;
    chips = c;
}

Игрок в Блэкджек

  public BlackJackPlayer(string name, int money, BitmapImage backSide, int currentImage)
    {
        Images = new List<Image>();
        Name = name;
        Money = money;
        ImageBack = backSide;
        CurrentImage = currentImage;
    }

GameViewModel.cs ( Думаю, проблема в этом классе, потому что я хочу положить имена игроков и монеты в блэкджек-плеер)

public GameViewModel(IView view, string name)
    {
        View = view;
        Random = new Random();
        Commands = new Commands(this);

        BlackJackPlayer = new BlackJackPlayer(name, 1000, ImagesHelper.CreateImage("player"), 2);
        BlackJackPlayer.CreateSplitDeck();
        view.AddSplitDeckCards(BlackJackPlayer);
        Computer = new BlackJackPlayer("Computer", 1000, ImagesHelper.CreateImage("computer"), 2);
        view.DisplayMoney(BlackJackPlayer, Computer);
        view.DisplayName(name);

        CardImages = ImagesHelper.GetBlackJackCards();
        view.AddCards(BlackJackPlayer, Computer);
        BlackJackPlayer.ShowBackside();
        Computer.ShowBackside();
        BetAmount = "100";
    }

** BlackJackScreen.Xaml.cs (здесь я пытаюсь получить доступ к GameViewModel, но, конечно, это невозможно, поскольку есть разные параметры -> p - тип игрока, а я должен быть строкой) -> * *

  public BlackjackScreen(Player p)
    {
        InitializeComponent();
        _player = p;
        defaultButtons = new[] { Hit, Stand, Split };
        splitButtons = new[] { HitLeft, HitRight, StandLeft, StandRight };
        DataContext = new GameViewModel(this, p);
    }

MainWindow.xaml.cs ( Это способ, которым я вызываю различные окна, которые я использую, который отлично работает, за исключением blackJackScreen)

    public void SetContent(Player p, int contentId)
    {
        switch (contentId)
        {
            case 0: ContentHolder.Content = new GamePicker(p); break;
            case 1: ContentHolder.Content = new BlackjackScreen(p); break;
            //case 2: ContentHolder.Content = new SlotsScreen(p); break;
            //case 3: ContentHolder.Content = new VideoPokerScreen(p); break;
            //case 4: ContentHolder.Content = new RouletteScreen(p); break;
        }
    }

Я искренне надеюсь, что вы дадите пример кода того, как это можно решить. Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...