簡體   English   中英

計時器為零后重新啟用按鈕

[英]Re-enabled the button after timer is zero

需要您的按鈕幫助。 定時器歸零后,它不會重新啟用。 但是,在我單擊 UI 或按鈕並且計時器為零后,它會重新啟用。 有任何想法嗎? 謝謝。

這是命令:

        RelayCommand _testCommand;
        public ICommand TestCommand
        {
            get
            {
                if (_testCommand == null)
                {
                    _testCommand = new RelayCommand(
                        (object o) =>
                        {
                            IsEnabled = false;
                            StartTimer(5);
                        }, (object j)=> IsEnabled );
                }
                return _testCommand;
            }
            set { _testCommand = null; }
        }

這是財產:

    bool _isEnabled = true;
    bool IsEnabled
    {
        get { return _isEnabled; }
        set
        {
            _isEnabled = value;
            OnPropertyChanged();

        }
    }

方法:

    private Timer timer1;
    private int counter;
    private void StartTimer(int cnt)
    {
        counter = cnt;
        timer1 = new Timer();
        timer1.Elapsed += OnTimedEvent;
        timer1.Interval = 1000;
        timer1.Start();
    }

    private void OnTimedEvent(object sender, ElapsedEventArgs e)
    {
        Console.WriteLine(counter);
        counter--;
        if (counter < 0)
        {
            timer1.Stop();
            IsEnabled = true;
        }            
    }

好的。 我想我回答了我自己的問題。 如果我錯了,請糾正我,但有兩件事正在發生。 一種是 ElapsedEventArgs 在不同的線程中執行。 二是按鈕(UI)不會自動更新。 我必須調用CommandManager.InvalidateRequerySuggested(); 強制更新。 OnTimedEvent方法更新為:

    private void OnTimedEvent(object sender, ElapsedEventArgs e)
    {
        Console.WriteLine(Thread.CurrentThread.ManagedThreadId + " " + counter);
        counter--;
        if (counter < 0)
        {
            Application.Current.Dispatcher.Invoke(() =>
            {
                IsEnabled = true;
                timer1.Stop();
                CommandManager.InvalidateRequerySuggested();
                Console.WriteLine("The caller id now is " + Thread.CurrentThread.ManagedThreadId);
            });
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM