In un commento Antonio chiede: Sicuramente avrai avuto la necessità; di visualizzare un finestra di dialogo o una MessageBox dal ViewModel, come hai risolto?

E’ proprio una necessità di questo genere che mi ha spinto verso il message borker, il classico esempio è:

“…l’utente sta editando una entity e pigia il bottone chiudi che è in binding con un CancelCommand nel ViewModel a questo punto il ViewModel consulta il servizio di ChangeTracking e scopre che l’utente ha apportato delle modifiche alla entity e deve chiedere se salvare o meno…”

natualmente non possiamo mica mettere una MessageBox nel ViewModel altrimenti che ci siamo fatti a fare tutte le se*he mentali dei giorni scorsi… ;-)

Nel mio caso ho risolto creando un messaggio del tipo “QueryUserMessage” che ha 2 proprietà:

  • Il messaggio da visualizzare all’utente;
  • Un bool che fornisce la “risposta” dell’utente;

Il ViewModel che deve “chiedere” posta il messaggio, la View della shell ha sottoscritto il messaggio e si preoccupa di visualizzare la message box e impostare il valore di ritorno.

.m