如何在运行时修改WPF中的Grid RowDefinitions和ColumnDefinitions?

时间:2012-06-02 13:53:01

标签: c# wpf xaml

我正在编写一个简单的益智游戏程序 - 除了一个单元格外都有按钮,你必须通过使用唯一的一个空单元移动它们来正确订购它们。第一个版本是一个3x3网格,有8个按钮+一个不可见。但是,现在我想让用户更改行数和列数。我需要使用滑块来操纵高度和宽度。不幸的是,我不知道如何在运行时操作网格。这是我目前所拥有的屏幕截图:screenshot

1 个答案:

答案 0 :(得分:2)

除非WPF与Silverlight有很大不同,否则你不能只是以编程方式改变列/网格定义吗?

(只是警告,写在记事本中,因为我没有视觉工作室和我一起检查,所以我只是通过记忆)

myGrid.Columns.Clear();
myGrid.Rows.Clear();

int buttonNumber = 0;
double buttonWidth = GridWidth / numberOfColumns;
double buttonHeight = GridHeight / numberOfRows;

for (int columnNumber = 0; columnNumber < numberOfColumns; columnNumber++)
{
    var column = new ColumnDefinition();
    myGrid.Columns.Add(column);

    for (int rowNumber = 0; rowNumber < numberOfRows; rowNumber++)
    {
        var row = new RowDefinition();
        myGrid.Rows.Add(row);

        var button = new Button();
        button.Content = ++buttonNumber;
        button.Width = buttonWidth;
        button.Height = buttonHeight;
        Grid.SetColumn(button, columnNumber);
        Grid.SetRow(button, rowNumber);
    }
}
相关问题