簡體   English   中英

在WPF中為變量創建事件

[英]Create event for variable in WPF

我有一個帶有開始按鈕的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
}

暫無
暫無

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

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