按钮不会按预期更改可见性

时间:2017-10-01 12:01:46

标签: c# wpf

我有一个函数,它有一个包含n * n个数字的多维数组,以及一个包含我的程序按钮的向量。

现在,我的程序可以随机播放数组中的数字并将每个值分配给一个按钮,每次按下按钮都会“刷新每个按钮的值”。

当我每次“刷新”按钮时,我试图隐藏一个特定的数字(例如,0)时,我现在遇到了问题,但是当我按下按钮时,它似乎没有显示上一个按钮,这导致最终隐藏所有按钮。

这是我现在的代码:

    public void Refresh(int NumberToHide)
    {
        foreach (Button b in buttons)
            b.Visibility = Visibility.Visible;

        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n; j++)
            {
                if (buttons[(i * 4 + j)].Content.ToString() == NumberToHide.ToString())
                {
                    buttons[(i * 4 + j)].Visibility = Visibility.Hidden;
                }
                else
                {
                    buttons[(i * 4 + j)].Content = myArray[i, j].ToString();
                }
            }
        }
    }

函数开头的foreach不应该使每个按钮都可见吗?

为什么每次调用该函数时,不可见的按钮都不会显示?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

问题似乎来自于 隐藏元素分配Content的事实。由于您的可见性检查基于该内容,因此以前不可见的元素不会更改。我无法重现它,因为您的许多代码都缺失了,但根据您的描述,我会检查内容而不是当前

public void Refresh(int numberToHide)
{
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            var button = buttons[i * 4 + j];
            button.Content = myArray[i, j];
            button.Visibility = myArray[i, j] == numberToHide ?
                Visibility.Hidden : Visibility.Visible;
        }
    }
}