A simple message class that we use to pass messages around the application via the Messenger singleton, but keep the parts sufficiently decoupled for the MVVM style of work.
 /// <summary>
 /// Consume any messages that are passed between models
 /// </summary>
 /// <param name="message"></param>
 void ConsumeMessage(SimpleMessage message)
 {
     switch (message.Type)
     {
         case SimpleMessage.MessageType.SwitchToTimerView:
             //  ignored
             break;
         case SimpleMessage.MessageType.SwitchToSettingsView:
             //  ignored
             break;
         case SimpleMessage.MessageType.SettingsChanged:
             StopTimerExecute();
             UpdateMembersFromSettings();
             break;
         case SimpleMessage.MessageType.TimerStop:
             StopTimerExecute();
             break;
         case SimpleMessage.MessageType.TimerStart:
             StartTimerExecute();
             break;
     }
 }
 /// <summary>
 /// Consume the SimpleMessage class and perform actions based on its content.
 /// </summary>
 /// <param name="message"></param>
 private void ConsumeMessage(SimpleMessage message)
 {
     switch (message.Type)
     {
         case SimpleMessage.MessageType.TimerTick:
             //  this happens the most so put it first
             WindowTitle = message.Message;
             break;
         case SimpleMessage.MessageType.SwitchToTimerView:
             ExecuteViewTimerCommand();
             break;
         case SimpleMessage.MessageType.SwitchToSettingsView:
             ExecuteViewSettingsCommand();
             break;
         case SimpleMessage.MessageType.SwitchToAboutView:
             ExecuteViewAboutCommand();
             break;
         case SimpleMessage.MessageType.SettingsChanged:
             UpdatePropertiesFromSettings();
             break;
         case SimpleMessage.MessageType.TimerStop:
             WindowTitle = _originalWindowTitle;
             break;
         case SimpleMessage.MessageType.TimerReset:
             //  restore window title if we reset.
             WindowTitle = _originalWindowTitle;
             break;
         case  SimpleMessage.MessageType.SwitchToPopUpView:
             Visible = false;
             var popUp = new PopUp();
             popUp.Show();
             break;
     }
 }