Я новичок в C#, и я пытаюсь создать базовую игру (из книги), однако я нахожусь в точке, где она больше не будет работать из-за следующей ошибкиC# - информация WinRT: элемент уже является дочерним элементом другого элемента. Дополнительная информация: Установленные компоненты не обнаружены
исключение типа «System.Exception» произошло в mscorlib.dll но не была обработана в пользовательском коде
WinRT информации: элемент уже потомок другого элемента.
Дополнительная информация: Не обнаружено установленных компонентов.
Глядя на код, я не могу понять, что не так;
private void StartGame()
{
human.IsHitTestVisible = true;
humanCaptured = false;
progressBar.Value = 0;
startButton.Visibility = Visibility.Collapsed;
playArea.Children.Add(target);
playArea.Children.Add(human);
enemyTimer.Start();
tagetTimer.Start();
}
Глядя на схему документа, это также похоже в правильном порядке;
Единственное, что мне кажется, это Xaml;
<Canvas x:Name="playArea" Grid.RowSpan="3" Margin="10,77,10,0" >
<StackPanel x:Name="human" Orientation="Vertical">
<Ellipse Fill="Purple" Height="10" Width="10" />
<Rectangle Fill="Purple" Height="25" Width="10"/>
</StackPanel>
<Rectangle x:Name="target" Height="53.149" Canvas.Left="1202.196" Stroke="Black" Canvas.Top="419.937" Width="56.008" RenderTransformOrigin="0.5,0.5" UseLayoutRounding="False" d:LayoutRounding="Auto">
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="Black"/>
<GradientStop Color="#FF4860F7" Offset="0.508"/>
</LinearGradientBrush>
</Rectangle.Fill>
<Rectangle.RenderTransform>
<CompositeTransform Rotation="46.097"/>
</Rectangle.RenderTransform>
</Rectangle>
<TextBox x:Name="gameOverText" TextWrapping="Wrap" Text="Game Over" Canvas.Left="428" Canvas.Top="248" Height="107" Width="413" FontSize="72" FontWeight="Bold" FontStyle="Italic"/>
<Canvas.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF1BAE78" Offset="1"/>
<GradientStop Color="#FFDCEE3B"/>
</LinearGradientBrush>
</Canvas.Background>
</Canvas>
Любые идеи?
Непонятно, почему вы вызываете playArea.Children.Add(), когда эти элементы уже являются дочерними элементами playArea. Как показано как xaml, так и контуром. Наверное, о чем он жалуется. Поместите большую стрелку на утверждение, которое выдает это исключение. И прокомментируйте эти два звонка, если моя догадка правильная, тогда она решает проблему. –
Спасибо, что сделал работу, я не на 100%, чтобы быть честным. Это моя первая реальная попытка на C#, и я следую за книгой (Head First), вероятно, где я ошибаюсь. – Tom
Я добавлю свой код ниже, чтобы это имело смысл: – Tom