【问题标题】:How to modify Grid RowDefinitions and ColumnDefinitions in WPF during runtime?如何在运行时修改 WPF 中的 Grid RowDefinitions 和 ColumnDefinitions?
【发布时间】:2012-06-02 13:53:00
【问题描述】:

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

【问题讨论】:

    标签: c# wpf xaml


    【解决方案1】:

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

    (只是警告,在记事本中写这个,因为我没有 Visual Studio 可以检查,所以我只是凭记忆)

    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);
        }
    }
    

    【讨论】:

    • 不幸的是,我认为WPF中的Grid类中没有Clear()或Add()这样的方法。
    • @vtvs 在Grid 类上,没有。它在 ColumnDefinitionCollectionRowDefinitionCollection 课程上,但这是我所拥有的:msdn.microsoft.com/en-us/library/…
    猜你喜欢
    • 2018-01-22
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    • 2016-03-04
    • 2020-06-12
    • 1970-01-01
    相关资源
    最近更新 更多