Question

I am trying to dynamically create and add items to grids in Windows Phone application. Before I did it on a simple page, worked fine. Now I am doing the same on a Pivot page and I get exception when adding a 2nd item. "Element is already the child of another element." XAML side of code:

<controls:PivotItem Header="pirmadienis" x:Name="Monday">
            <ScrollViewer Height="600">
                <Grid x:Name="MondayGrid">
                    <TextBlock Text="Laikas" Margin="21,0,-21,0" VerticalAlignment="Top" HorizontalAlignment="Left"/>
                    <TextBlock x:Name="fatherTime" FontSize="40" Text="44:44" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0,21,0,0" Visibility="Collapsed"/>
                    <TextBlock x:Name="fatherText" HorizontalAlignment="Left" Margin="115,21,0,0" Text="WWWWWWWWW" VerticalAlignment="Top" FontSize="40" Width="341" Visibility="Collapsed"/>
                    <TextBlock Text="Pavadinimas" Margin="215,0,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/>
                </Grid>
            </ScrollViewer>
        </controls:PivotItem>

        <!--Pivot item two-->
        <controls:PivotItem Header="antradienis" x:Name="Tuesday" Visibility="Collapsed">
            <ScrollViewer Height="600">
                <Grid x:Name="TuesdayGrid">
                    <TextBlock Text="Laikas" Margin="21,0,-21,0" VerticalAlignment="Top" HorizontalAlignment="Left"/>
                    <TextBlock Text="Pavadinimas" Margin="215,0,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/>
                </Grid>
            </ScrollViewer>
        </controls:PivotItem>

        <!--Pivot item three-->
        <controls:PivotItem Header="trečiadienis" x:Name="Wednesday" Visibility="Collapsed">
            <ScrollViewer Height="600">
                <Grid x:Name="WednesdayGrid">
                    <TextBlock Text="Laikas" Margin="21,0,-21,0" VerticalAlignment="Top" HorizontalAlignment="Left"/>
                    <TextBlock Text="Pavadinimas" Margin="215,0,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/>
                </Grid>
            </ScrollViewer>
        </controls:PivotItem>

        <!--Pivot item four-->
        <controls:PivotItem Header="ketvirtadienis" x:Name="Thursday" Visibility="Collapsed">
            <ScrollViewer Height="600">
                <Grid x:Name="ThursdayGrid">
                    <TextBlock Text="Laikas" Margin="21,0,-21,0" VerticalAlignment="Top" HorizontalAlignment="Left"/>
                    <TextBlock Text="Pavadinimas" Margin="215,0,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/>
                </Grid>
            </ScrollViewer>
        </controls:PivotItem>

        <!--Pivot item five-->
        <controls:PivotItem Header="penktadienis" x:Name="Friday" Visibility="Collapsed">
            <ScrollViewer Height="600">
                <Grid x:Name="FridayGrid">
                    <TextBlock Text="Laikas" Margin="21,0,-21,0" VerticalAlignment="Top" HorizontalAlignment="Left"/>
                    <TextBlock Text="Pavadinimas" Margin="215,0,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/>
                </Grid>
            </ScrollViewer>
        </controls:PivotItem>

        <!--Pivot item six-->
        <controls:PivotItem Header="šeštadienis" x:Name="Saturday" Visibility="Collapsed">
            <ScrollViewer Height="600">
                <Grid x:Name="SaturdayGrid">
                    <TextBlock Text="Laikas" Margin="21,0,-21,0" VerticalAlignment="Top" HorizontalAlignment="Left"/>
                    <TextBlock Text="Pavadinimas" Margin="215,0,0,0" VerticalAlignment="Top" HorizontalAlignment="Left"/>
                </Grid>
            </ScrollViewer>
        </controls:PivotItem>
    </controls:Pivot>

C# part of code:

void addDateItem(string text)
{
    Thickness tempThick = fatherTime.Margin;
    tempThick.Top += itemsAdded * 58;
    TextBlock temp = new TextBlock() 
        { 
            Text = text, 
            FontSize = 40, 
            HorizontalAlignment = HorizontalAlignment.Left, 
            VerticalAlignment = VerticalAlignment.Top, 
            Margin = tempThick 
        };
    temp.Tap += paspaudus;
    MondayGrid.Children.Add(temp); 
    TuesdayGrid.Children.Add(temp); // Exception on this line
    WednesdayGrid.Children.Add(temp);
    ThursdayGrid.Children.Add(temp);
    FridayGrid.Children.Add(temp);
    SaturdayGrid.Children.Add(temp);
    itemsAdded++;
}
Was it helpful?

Solution

The error message was clear. You can't add an element that is already added as child of a parent to other parent element. You have to instantiate new TextBlock object for each <grid>.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top