0

我必须创建一个网格数组,这个数组的大小是动态确定的。

我的尝试是:

int size = 4; //This "size" will be determined dynamically.suppose i got 4 here
Grid[] rowgrid = new Grid[size];
for (int i = 0; i < size; i++)
{
    rowgrid[i].RowDefinitions.Add(new RowDefinition());
}

它没有给出任何错误,但是当我运行时它给出了异常: The object reference is not set to an instance of an object.

编辑:我想使用数组,因为:在初始化之前我必须这样做:

rowgrid[0].Opacity=0.1;
rowgrid[1].Opacity=0.3;
rowgrid[2].Opacity=0.5;

如果您建议我不要以编程方式工作,那么我想提前通知我我很清楚,但我有义务这样做,因为我正在从事已经开发的项目并且没有更多选择。如果有人让我摆脱这个错误或任何其他替代方案来实现这一目标,那将是一个很大的帮助。

4

1 回答 1

0

如果您想要一个具有不同行或列的网格。可以使用 UniformGrid,列和行属性是绑定的。

所以,

<UniformGrid Name="uniformGrid1" Rows="{Binding NumberOfRows}" Columns="{Binding NumberOfColumns}">
    <Button Content="Button1" Grid.Row="0" Grid.Column="0" />
    <Button Content="Button2" Grid.Row="0" Grid.Column="2" />
</UniformGrid>

在您的代码中

private int _numberOfRows;
public int NumberOfRows
    {
        get { return _numberOfRows; }
        set { _numberOfRows= value; RaisePropertyChanged("NumberOfRows"); }
    }    
private int _numberOfColumns;
public int NumberOfColumns
    {
        get { return _numberOfColumns; }
        set { _numberOfColumns= value; RaisePropertyChanged("NumberOfColumns"); }
    } 


public MainViewModel()
{
    NumberOfColumns = 3;
    NumberOfRows = 2;
}
于 2014-06-13T03:37:19.880 回答