Hoffentlich ist der Titel nicht zu vage, ich bin mir nicht sicher, wie es sonst zu Wort. Was ich versuche (als grundlegendes Beispiel) ist, ein Rechteck programmgesteuert zu einem Canvas hinzuzufügen, dann zu einem späteren Zeitpunkt die lokale Variable in ein neues Rechteck mit anderen Eigenschaften zu ändern und dieses auf der Leinwand zu aktualisieren.Programmatisch erstellt UIElement 'unlinks', wenn lokale Variable Wert auf ein neues UIElement gesetzt
// First rectangle
Rectangle rect = new Rectangle()
{
Width = 50,
Height = 50,
Fill = Brushes.Red,
Margin = new Thickness(20, 20, 0, 0)
};
// Add it to the canvas
mainCanvas.Children.Add(rect);
// Change something about the rectangle, which works
rect.Fill = Brushes.Black;
// Create new rectangle
Rectangle newRect = new Rectangle()
{
Width = 15,
Height = 20,
Fill = Brushes.Blue,
Margin = new Thickness(20, 20, 0, 0)
};
// Set the original rectangle to the new rectangle
rect = newRect;
// Canvas rectangle is no longer 'linked' to the rect variable :(
Das war es! Es war ziemlich einfach, die Variable wurde in einer anderen Klasse gespeichert und in dieser Klasse durch eine Methode neu zugewiesen, so dass der Zugriff auf die Arbeitsfläche nicht möglich war. Ich habe es einfach als Parameter übergeben und den von Ihnen vorgeschlagenen Code verwendet. Prost! – Aidan