WPF Fehlermeldung: Führen Sie zuerst eine Trennung durch. Beim verschieben von Child Elementen
Fehlermeldung
System.InvalidOperationException HResult=0x80131509 Message=Bei dem angegebenen Element handelt es sich bereits um das logische untergeordnete Element eines anderen Elements. Führen Sie zuerst eine Trennung durch. Source=PresentationFramework |
Fehler:
Der Fehler wird verursacht, wenn man versucht ein Button Child-Element aus einem Stackpanel im Beispiel zu übertragen auf eine andere Zelle
C# Code mit Fehler
Es wird versucht ein Child Element aus dem parent WPF FrameworkElement zu nehmen und in ein anderem Element als Child einzufügen.
StackPanel stackPanel = cellMitarbeiter.Child as StackPanel; if(stackPanel.Children.Count>0) { //Button BtnMitarbeiter = (Button)stackPanel.Children[0]; //*Error Button btn = (Button) VisualTreeHelper.GetChild(stackPanel, 0); //*error cellMaschine.Child = btn; }
|
Lösung:
Im ersten Schritt das Framework Element zuweisen
Dann ein Remove im alten Parent Element
Dann im Schritt 3 das Element als Child einem neuen Parent Element zuweisen
if (cellMitarbeiter.Child.GetType() == typeof(StackPanel)) { StackPanel stackPanel = cellMitarbeiter.Child as StackPanel; if(stackPanel.Children.Count>0) { Button btn = (Button) stackPanel.Children[0]; //*step 1 stackPanel.Children.RemoveAt(0); //*step 2 cellMaschine.Child = btn; //*step 3 }
}
|
Im Beispiel werden von den unteren Zellen die Einträge zum oberen Bereich verschoben