在 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
循环监视它并将其放在线程中,但我想避免它。
你创建一个这样的事件:
//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
}