将复选框绑定到Timer.Enabled

时间:2017-07-05 14:35:42

标签: c# winforms binding

是否可以将复选框绑定到System.Timers.Timer的Enabled属性?

我可以将它包装在一个返回其状态的布尔属性中,如下所示:

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

但是当_timer.Autoreset = false且_timer.Enabled更改值时,我不会收到通知。

我想要一个复选框(“EnabledCheckbox”),其中显示了计时器的当前状态,用户可以启用或禁用它。此外,我想要另一个复选框(“AutoResetCheckbox”)来控制这个计时器是否启用了自动复位属性。最后,如果禁用Autoreset并且计时器触发Elapsed事件并因此将Enabled设置为false,我希望“EnabledCheckbox”自行取消选中。

我如何实现这一目标?

编辑:我可以自己实现autoreset,但有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

将_timer.Autoreset包装成这样的属性:

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

然后使用属性而不是_timer.Autoreset。