Я создаю игру TicTacToe, и я пытаюсь сбросить содержимое кнопки, используя статический метод в моем коде для WPF. Когда кнопка нажимает, отображается содержимое, связанное с «Игроком» того, кто его поворачивает. У меня есть класс Player
, в котором хранится информация об игроке, которая отображается в разных местах. Я написал статический метод для сброса «игрового поля», но когда я запускаю свой метод, содержимое кнопки не сбрасывается. Вот как выглядит мой код.WPF с использованием статического метода для очистки содержимого кнопки
public class Player
{
public string plyName { get; set; }
public int plyType { get; set; } // 0 = human player, 1 = basic AI, 2 = advanced AI
public int plyScore { get; set; }
public char plySymbol { get; set; }
public int plyNumber { get; set; }
}
public static int round { get; set; }
public static int numRounds { get; set; }
public static int[,] gameBoard = new int[3, 3];
public static Player Player1 = new Player();
public static Player Player2 = new Player();
public static Player currPlayer;
и вот мой clearGameBoard Метод:
public static void clearGameBoard()
{
MainWindow mw = new MainWindow();
mw.btnTL.Content = "";
mw.btnTM.Content = "";
mw.btnTR.Content = "";
mw.btnML.Content = "";
mw.btnMM.Content = "";
mw.btnMR.Content = "";
mw.btnBL.Content = "";
mw.btnBM.Content = "";
mw.btnBR.Content = "";
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
App.gameBoard[i, j] = 0;
}
}
}
и вот моя XAML:
<Grid>
<Button x:Name="btnTL" HorizontalAlignment="Left" Margin="19,70,0,0" VerticalAlignment="Top" Width="63" Height="63" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontSize="35" Click="btnTL_Click"/>
<Button x:Name="btnTM" HorizontalAlignment="Left" Margin="87,70,0,0" VerticalAlignment="Top" Width="63" Height="63" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontSize="35" Click="btnTM_Click"/>
<Button x:Name="btnTR" HorizontalAlignment="Left" Margin="155,70,0,0" VerticalAlignment="Top" Width="63" Height="63" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontSize="35" Click="btnTR_Click"/>
<Button x:Name="btnML" HorizontalAlignment="Left" Margin="19,138,0,0" VerticalAlignment="Top" Width="63" Height="63" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontSize="35" Click="btnML_Click"/>
<Button x:Name="btnMM" HorizontalAlignment="Left" Margin="87,138,0,0" VerticalAlignment="Top" Width="63" Height="63" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontSize="35" Click="btnMM_Click"/>
<Button x:Name="btnMR" HorizontalAlignment="Left" Margin="155,138,0,0" VerticalAlignment="Top" Width="63" Height="63" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontSize="35" Click="btnMR_Click"/>
<Button x:Name="btnBL" HorizontalAlignment="Left" Margin="19,206,0,0" VerticalAlignment="Top" Width="63" Height="63" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontSize="35" Click="btnBL_Click"/>
<Button x:Name="btnBM" HorizontalAlignment="Left" Margin="87,206,0,0" VerticalAlignment="Top" Width="63" Height="63" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontSize="35" Click="btnBM_Click"/>
<Button x:Name="btnBR" HorizontalAlignment="Left" Margin="155,206,0,0" VerticalAlignment="Top" Width="63" Height="63" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontSize="35" Click="btnBR_Click"/>
<Label x:Name="label" Content="Tic Tac Toe" HorizontalContentAlignment="Center" HorizontalAlignment="Left" Margin="19,10,0,0" VerticalAlignment="Top" Height="47" Width="199" FontSize="30"/>
</Grid>
Я попытался просто установить кнопки непосредственно содержание, но получил ошибку, что «объект ссылка, необходимая для нестатического свойства ". Я уверен, что это очевидная ошибка, которую я делаю, но я не могу найти ответ, который помогает. Любая помощь будет принята с благодарностью. Благодарю.
Ошибка в том, что метод clearGameBoard очищает плату в другом окне mw ('MainWindow mw = new MainWindow();'). в качестве быстрого взлома вы можете получить активное окно из «App.Current.MainWindow» и передать его в «MainWindow». Но все становится проще, если вы читаете и применяете подход MVVM – ASh