2017-07-05 5 views
1

Ist es möglich, ein Kontrollkästchen an Enabled-Eigenschaft von System.Timers.Timer zu binden?Kontrollkästchen an Timer.Enabled binden

Ich kann es in einem Booleschen Eigenschaft wickeln, die seinen Zustand zurückgibt, wie folgt aus:

public bool TimerEnabled 
    { 
     get { return _timer.Enabled; } 
     set 
     { 
      _timer.Enabled = value; 
      InvokePropertyChanged(new PropertyChangedEventArgs("TimerEnabled")); 
     } 
    } 

aber ich bekomme nicht benachrichtigt, wenn _timer.Autoreset = false und _timer.Enabled Wert ändert.

Ich möchte eine Checkbox ("EnabledCheckbox"), in der der aktuelle Status des Timers angezeigt wird, und der Benutzer kann aktivieren oder deaktivieren. Außerdem möchte ich ein anderes Kontrollkästchen ("AutoResetCheckbox"), das steuert, ob dieser Timer seine Autoreset-Eigenschaft aktiviert hat. Und schließlich, wenn Autoreset deaktiviert ist und der Timer das Elapsed-Ereignis auslöst und daher Enabled auf false setzt, möchte ich, dass die "EnabledCheckbox" das Häkchen entfernt.

Wie erreiche ich das?

Edit: Ich könnte meine eigene Implementierung von Autoreset machen, aber gibt es einen besseren Weg?

Antwort

0

Wrap _timer.Autoreset in eine Eigenschaft wie folgt aus:

public bool Autoreset 
{ 
    get { return _timer.Autoreset; } 
    set 
    { 
     _timer.Autoreset = value; 
     InvokePropertyChanged(new PropertyChangedEventArgs(nameof(TimerEnabled)); 
     InvokePropertyChanged(new PropertyChangedEventArgs(nameof(Autoreset)); 
    } 
} 

Und dann mit der Eigenschaft arbeiten statt _timer.Autoreset.

+0

Das löst mein Problem nicht. Es wird ausgelöst, wenn ich es programmgesteuert ändere, aber wenn es auf false gesetzt ist und Elapsed auftritt, ändert TimerEnabled den Wert nicht. – Vallo