Benutzer mit den meisten Antworten
Mehrere Fenster und Zugriff auf selbe Daten. Databinding?

Frage
-
Hallo Forum,
ich versuch mal mein Problem zu beschreiben ;)
Ich habe eine Anwendung geschrieben die über die USB-Schnittstelle mit einem µC kommuniziert.
Der µC schaltet einige Relais und stellt verschiedene Spannungen an einem DAC ein.
Die Relais und DAC's habe ich als Klassen aufgebaut.
Die Steuerung erfolgt über zwei Fenster von denen immer nur eins sichtbar ist. Es gibt ein Hauptfenster mit allen Steuerelementen und ein kleines Fenster mit ein paar ausgewählten Steuerelementen.
Jetzt zum eigentlichen Problem:
Wie verknüpfe ich z.B. eine Checkbox im Hauptfenster, die den Zustand eines Relais darstellt, sinnvoll mit der entsprechenden Checkbox auf dem kleinen Fenster?
Mit data binding klappt das ganz gut. Allerdings habe ich dann das Problem das er mit den Befehl zum setzen des Relais mehrmals sendet... das wollte ich vermeiden.
Ich erklär mir das so: Checkbox(hauptfenster).checked -> relay.state = true -> send_usb
|
-> checkbox(kleines Fenster).checked -> relay.state = true -> send_usb ......
Wie macht man sowas am besten?
Grüße Andy
Antworten
-
Hallo Andy,
ganz sicher bin ich mir nicht, ob ich Deiner Beschreibung folgen kann.
Die eigentliche Steuerung des Relays sollte über die Klasse erfolgen und nicht über die Steuerelemente (Formulare).
Um die Benachrichtigungen nur einmalig zu verschicken und mehrere Formulare/Steuerelemente
über Datenbindung synchron zu halten implementiert man für Klassen INotifyPropertyChanged.
Unter Gewusst wie: Implementieren der INotifyPropertyChanged-Schnittstelle findest Du ein Beispiel.
In Deinem Falle kannst Du die Änderung (send_usb) in diese Benachrichtigung einhängen
und nur beim effektiven Wechsel des Status reagieren.
Gruß Elmar- Als Antwort vorgeschlagen Robert Breitenhofer Dienstag, 22. September 2009 15:13
- Als Antwort markiert Robert Breitenhofer Montag, 5. Oktober 2009 20:38
Alle Antworten
-
Hallo Andy,
ganz sicher bin ich mir nicht, ob ich Deiner Beschreibung folgen kann.
Die eigentliche Steuerung des Relays sollte über die Klasse erfolgen und nicht über die Steuerelemente (Formulare).
Um die Benachrichtigungen nur einmalig zu verschicken und mehrere Formulare/Steuerelemente
über Datenbindung synchron zu halten implementiert man für Klassen INotifyPropertyChanged.
Unter Gewusst wie: Implementieren der INotifyPropertyChanged-Schnittstelle findest Du ein Beispiel.
In Deinem Falle kannst Du die Änderung (send_usb) in diese Benachrichtigung einhängen
und nur beim effektiven Wechsel des Status reagieren.
Gruß Elmar- Als Antwort vorgeschlagen Robert Breitenhofer Dienstag, 22. September 2009 15:13
- Als Antwort markiert Robert Breitenhofer Montag, 5. Oktober 2009 20:38