Modificação de uma grade de itensPanel RowDefinitionCollection

Este é um acompanhamento paraItemsControl não tem filhos durante o construtor do MainWindow

Com base na resposta à pergunta SO "WPF: organizando itens de coleção em uma grade", tenho o seguinte:

 <ItemsControl Name="itemsControl1" ItemsSource="{Binding MyItems}"> 
    <ItemsControl.ItemsPanel> 
        <ItemsPanelTemplate> 
            <Grid Name="theGrid" ShowGridLines="True" /> 
        </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
    <ItemsControl.ItemContainerStyle> 
        <Style TargetType="{x:Type FrameworkElement}"> 
            <Setter Property="Grid.Row" Value="{Binding RowIndex}" /> 
            <Setter Property="Grid.Column" Value="{Binding ColumnIndex}" /> 
        </Style> 
    </ItemsControl.ItemContainerStyle> 
</ItemsControl> 

Agora, eu quero definir o número de linhas e colunas do theGrid no código por trás: theGrid.RowDefinitions.Clear (); theGrid.ColumnDefinitions.Clear ();

        for (uint i = 0; i < theNumberOfRows; i++) 
            theGrid.RowDefinitions.Add(new RowDefinition()); 

        for (uint i = 0; i < theNumberOfCols; i++) 
            theGrid.ColumnDefinitions.Add(new ColumnDefinition()); 

Conforme MattHamilton resposta de @ lá, o gird está disponível assim que itemsControl1. O ItemContainerGenerator.StatusChanged é acionado com o status GeneratorStatus.ContainersGenerated.

No entanto, tentar modificar a grade do manipulador de eventos gera uma exceção "Não é possível modificar 'RowDefinitionCollection' no estado somente leitura".

ntão, como posso definir as coleções de linhas e colunas doGrid antes que a janela seja mostrada ao usuári

edita: Estou modificando as propriedades da Grade a partir do manipulador de eventos itemsControl1.ItemContainerGenerator.StatusChanged:

        if (itemsControl1.ItemContainerGenerator.Status != GeneratorStatus.ContainersGenerated)
            return;

        itemsControl1.ItemContainerGenerator.StatusChanged -= ItemContainerGeneratorStatusChanged;

        SetGridRowsAndColumns(InitialNumberOfRows, InitialMaxNumberOfCols);

Observe que SetGridRowsAndColumns (numberOfRows, numberOfCols) funciona mais tarde, em resposta a um clique no botã

questionAnswers(2)

yourAnswerToTheQuestion