C# [WPF] Children von Canvas aktualisieren?

locomarco

Commander
Registriert
Aug. 2009
Beiträge
2.446
Hi,
ich hab vor mir mit WPF eine 8x8 LED Matrix zu machen.

Hab also eine LED Klasse geschrieben: http://pastebin.com/yk9LNdpm

Die LEDs werden dann mit
Code:
canvas1.Children.Add(led.toEllipse());
zur Canvas hinzugefügt.
Um die LEDs an- und ausschalten zu können, hab ich toggle() eingebaut.
Mein Problem ist, das die Ellipsen nicht aktualisiert werden. D.h. nach toggle() muss ich die LED von der Canvas entfernen und erneut hinzufügen um die Änderungen zu sehen.
So war das ganze aber nicht gedacht, weil das doch etwas umständlich ist.

So wie ich das sehe, liegt das Problem darin, das ich mit toggle() nicht die eigentliche Ellipse ändere.
Ich bin die ganze Zeit am überlegen wie ich das lösen könnte, aber ich komm einfach nich drauf.
Vielleicht kann mir ja einer von euch weiterhelfen ...

Grüße
loco
 
Die toggle muss auch folgendes machen:

Code:
newLed.Fill = new SolidColorBrush(_currentColor);

Nur das Popertie Color zu ändern aktualisiert ja nicht die Farbe deiner Ellipse sondern deines Objektes welches die Ellipse erzeugt
 
Manchmal sieht man vor lauter Bäumen den Wald nicht mehr... Vielen Dank :)
 
class LightEmittingDiode extends Ellipse {

macht imho mehr Sinn, und Du kannst einiges an Variablen und toEllipse() einsparen ..
 
Könntest du das vielleicht etwas ausführlicher erklären?
Vererbung ist neuland für mich.

EDIT: Achja,
Code:
public class LightEmittingDiode : Ellipse
geht nicht: "Vom versiegelten Typ "System.Windows.Shapes.Ellipse" kann nicht abgeleitet werden."
 
Zuletzt bearbeitet:
Wow .. Sealed, die spinnen die Römer. :evillol:
 
In diesem Fall würde es aber Sinn machen.
Aber ist ja auch egal, muss man halt ein wenig mehr Code schreiben.
 
Timmey92 schrieb:
In diesem Fall würde es aber Sinn machen.
Aber ist ja auch egal, muss man halt ein wenig mehr Code schreiben.

Nein nicht wirklich. Genau dafür ist WPF nämlich ausgelegt. Man kann das Aussehen jetzt über die View manipulieren und muss kein komplettes Model dafür schreiben.
 
Zurück
Oben