在 WPF 中为变量创建事件

本文关键字:创建 事件 变量 WPF | 更新日期: 2023-09-27 18:34:17

我有一个带有开始按钮的WPF表单。单击它时,我正在调用另一个名为 ClassA 的类的 start 函数。

这是ClassA的代码:

    private DispatcherTimer m_dispatcherTimer = new DispatcherTimer();
    private int m_timerCounter;
    public bool IsRunning { get; private set; }
    private void DispatcherTimer_Tick(object sender, EventArgs e)
    {
        m_timerCounter ++;
        if (m_timerCounter == MaxCounter)
            Stop();
    }
    public void Start()
    {
        IsRunning = true;
        m_timerCounter = 0;
        m_dispatcherTimer.Start();
    }
    public void Stop()
    {
        m_dispatcherTimer.Stop();
        m_timerCounter = 0;
        IsRunning = false;
    }

这是我所追求的:

每当ClassA的属性IsRunning发生变化时,我想在表单的代码后面弹出一个消息框。

我可以使用while循环监视它并将其放在线程中,但我想避免它。

在 WPF 中为变量创建事件

你创建一个这样的事件:

//globals in ClassA
//create the handler delegate
public delegate void RunningChanged(bool isRunning);
//create the event
public event RunningChanged OnRunningChanged;

调用它:

//method in ClassA
private void SetRunning(bool running) 
{
    IsRunning = running;
    var handler = OnRunningChanged;
    if (handler != null)
    {
        handler(running);
    }
}

因此,在表单代码中,您可以执行以下操作:

var instance = new ClassA();
instance.OnRunningChanged += OnRunningChangedHandler;
private void OnRunningChangedHandler(bool isRunning)
{
     //do whatever you want to do when th running property changes
}