Search code examples
wpfmvvmviewmodelstatus

How do I update the status bar from multiple viewmodels?


I have MainWindow with a statusbar and multiple user controls in it. Each user control has a viewmodel. How do I bind/update the statusbar text from multiple viewmodels?


Solution

  • This is a simple one that I have used myself.

    Implement a Messenger system and give it a Singleton instance, say... StatusBarMessenger

    MainWindow View-Model:

    • Needs a string property, eg. Status.
    • Needs to register to the StatusBarMessenger in the Ctor
    StatusBarMessenger.Instance.Register(this, new Action(s => Status = s));

    All VM that requires to send text to the status bar may do the following:

    StatusBarMessenger.Instance.Send("Hello world");