我正在创建一个TicTacToe游戏,我正在尝试使用我的代码中的静态方法重置一个按钮的内容,用于WPF。当按下按钮时,它显示与"播放器"相关联的内容。谁变了。我有一个Player
类,用于存储有关播放器的信息,该信息显示在不同的位置。我已经编写了一个静态方法来重置游戏板",但是当我运行我的方法时,按钮的内容不会重置。这是我的代码的样子。
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>
我试图直接设置按钮内容,但得到的错误是#34;非静态属性所需的对象引用&#34;。我确定这是一个明显的错误,但我似乎无法在这里找到有帮助的答案。任何帮助将不胜感激。感谢。
答案 0 :(得分:0)
您创建一个新的MainWindow而不显示它而不是使用显示的那个。使用Application.Current.MainWindow。
这将解决您的问题,但您应该了解MVVM和绑定,这是WPF的重要功能,并提供了一种更简单的解决方案。