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>
.
WP Pivot - Element is already the child of another element
-
12-07-2023 - |
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++;
}
Solution
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow