通过网格中的代码添加元素 - WP

时间:2013-09-25 10:03:30

标签: c# xaml button windows-phone-8 grid

我正在尝试做一些简单的事情,就像通过后面的代码向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?任何解决方案?

谢谢,

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:2)

您可以使用Grid.SetRowmsdn)和Grid.SetColumnmsdn)方法:

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