Почему существует исключение при создании сетки

Я должен создать массив сетки, размер которого определяется динамически.

Моя попытка сделать это:

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;

Если вы предлагаете мне не работать программно, то я хочу сообщить, что я знаю это хорошо, но я обязан сделать это, потому что я работаю в уже разработанном проекте, и больше нет вариантов. Было бы очень полезно, если бы кто-нибудь заставил меня выйти из этой ошибки или любой другой альтернативы для достижения этой цели.

1 ответ

Если вы хотите сетку с разными строками или столбцами. Вы можете использовать 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;
}
Другие вопросы по тегам