0

我正在尝试做一些简单的事情,比如通过后面的代码将元素添加到 6x7 网格中。网格在 xaml 中定义如下

        <Grid x:Name="CalendarGrid" Grid.Row="1" Visibility="Collapsed">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="*"/>
                <RowDefinition Height="*"/>
                <RowDefinition Height="*"/>
                <RowDefinition Height="*"/>
                <RowDefinition Height="*"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>               

        </Grid>

我有一个名为 InitializeCalendar 的函数,它将用按钮填充网格。不知何故,我无法弄清楚如何指定要添加按钮的行和列。如何引用 CalendarGrid 的行和列?

    void InitializeCalendar()
    {
        for (int i = 0; i < 6; i++)
        {
            for (int j = 0; i < 7; j++)
            {
                butArray[i + 1, j + 1] = new Button();
                //CalendarGrid. I cant find function to specify the row and button
            }
        }
    }

我发现有一个属性叫 ColumnProperty。

butArray[i + 1, j + 1].SetValue(Grid.ColumnProperty, 0);

但是我的页面中有很多网格。如何引用 CalendarGrid?有什么解决办法吗?

谢谢,

4

2 回答 2

2

您可以使用Grid.SetRow( msdn ) 和Grid.SetColumn( msdn ) 方法:

void InitializeCalendar()
{
    for (int i = 0; i < 6; i++)
    {
        for (int j = 0; j < 7; j++)
        {
            butArray[i, j] = new Button();
            butArray[i, j].Content = (i).ToString() + (j).ToString();                 
            CalendarGrid.Children.Add(butArray[i, j]);
            Grid.SetRow(butArray[i, j], i);
            Grid.SetColumn(butArray[i, j], j);                   
        }
    }
}
于 2013-09-25T10:28:41.290 回答
2

您必须将按钮添加到 CalendarGrid。试试下面的方法:

CalendarGrid.Children.Add(butArray[i + 1, j + 1]);
butArray[i + 1, j + 1].SetValue(Grid.ColumnProperty, columnNumber);
butArray[i + 1, j + 1].SetValue(Grid.RowProperty, rowNumber);
于 2013-09-25T10:22:34.523 回答