WPF使用静态方法清除按钮的内容

时间:2016-06-19 19:10:43

标签: c# wpf

我正在创建一个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;。我确定这是一个明显的错误,但我似乎无法在这里找到有帮助的答案。任何帮助将不胜感激。感谢。

1 个答案:

答案 0 :(得分:0)

您创建一个新的MainWindow而不显示它而不是使用显示的那个。使用Application.Current.MainWindow

这将解决您的问题,但您应该了解MVVM和绑定,这是WPF的重要功能,并提供了一种更简单的解决方案。