Laden...

Fehlermeldung: Das Element ist ein untergeordnete Element eines anderen Elements.

Letzter Beitrag vor einem Jahr 3 Posts 534 Views
Fehlermeldung: Das Element ist ein untergeordnete Element eines anderen Elements.

Hallo, ich versuche das ein Canvas Control bei einer bestimmten Position in ein bestimmtes Stack Panel hinzugefügt wird. bekomme aber diese Fehlermeldung:

System.InvalidOperationException: "Bei dem angegebenen Element handelt es sich bereits um das logische untergeordnete Element eines anderen Elements. Führen Sie zuerst eine Trennung durch."

C# Code

private void TextBox_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
    double postion = e.GetPosition(canvas).X - firstXPos - canvas.Margin.Left;

    if (postion <= 0)
    {
        StackPanelCol0.Children.Add(MoveableBorder);
        StackPanelCol1.Children.Remove(MoveableBorder);
        StackPanelCol2.Children.Remove(MoveableBorder);
    }
    else if (postion > 0 && postion < 300)
    {
        StackPanelCol0.Children.Remove(MoveableBorder);
        StackPanelCol1.Children.Add(MoveableBorder);
        StackPanelCol2.Children.Remove(MoveableBorder);
    }
    else
    {
        StackPanelCol0.Children.Remove(MoveableBorder);
        StackPanelCol1.Children.Remove(MoveableBorder);
        StackPanelCol2.Children.Add(MoveableBorder);
    }
        movingObject = null;
}

XAML

   <Grid>
      <Grid.RowDefinitions>
          <RowDefinition Height="50"/>
          <RowDefinition />
      </Grid.RowDefinitions>
      <!--AddTasks-->

      <!--Tasks-->
      <Grid Grid.Row="1">
          <Grid.ColumnDefinitions>
              <ColumnDefinition/>
              <ColumnDefinition/>
              <ColumnDefinition/>
          </Grid.ColumnDefinitions>
          
          <Grid.RowDefinitions>
              <RowDefinition Height="50"/>
              <RowDefinition/>
          </Grid.RowDefinitions>
          
          <StackPanel Name="StackPanelCol0" Grid.Column="0" Grid.Row="1" AllowDrop="True"/>
          <StackPanel Name="StackPanelCol1" Grid.Column="1" Grid.Row="1" AllowDrop="True"/>
          <StackPanel Name="StackPanelCol2" Grid.Column="2" Grid.Row="1" AllowDrop="True"/>

          <Canvas x:Name="canvas" Grid.Row="1" Background="Transparent" MouseLeftButtonDown="TextBox_MouseLeftButtonDown" HorizontalAlignment="Center" Margin="0,0,300,0"
                  MouseMove="TextBox_MouseMove" MouseLeftButtonUp="TextBox_MouseLeftButtonUp">
              <Border x:Name="MoveableBorder" Background="Red" Height="85" Width="250"  >
                  <TextBlock Text="2323" HorizontalAlignment="Center" VerticalAlignment="Center"/>
              </Border>
          </Canvas>
      </Grid>
  </Grid>

Steht ja in der Fehlermeldung: immer erst Remove, dann Add.

Führen Sie zuerst eine Trennung durch.

Du solltest aber MVVM korrekt anwenden.

Bin noch neu mit WPF. was vom Code würdest du in den ViewModel Packen?