Als ich gefragt wurde, wie ein Dialog in MVVM mir jemand zu implementieren empfohlen, diesen Thread zu lesen:MessageBox wird nicht in MVVM-Anwendungen empfohlen?
var dialog = new DialogViewmodel();
var result = _dialogservice.ShowDialog("My Dialog", dialog);
if(result.HasValue && result.Value)
{
//accept true
}
else
{
//Cancel or false
}
:
MVVM, DialogService and Dialog Result
Nach Ansicht Modell wird der Dialog auf diese Weise aufgerufen Aber ist das anders als eine messageBox auf diese Weise?
In diesem zweiten Fall verwende ich MessageBox anstelle des benutzerdefinierten Dialogfelds, sodass ich keinen Unterschied sehe.
Wie auch immer, in vielen Fällen habe ich gelesen, dass eine MessageBox in MVVM-Anwendung eine schlechte Idee ist, weil es das MVVM-Muster bricht. Aber wenn das wahr ist, sehe ich nicht, wie die erste Lösung das MVVM-Muster nicht bricht und das zweite bricht es.
Jede Messagebox ist ein U/X-Designfehler, da sie den Benutzer unterbricht. –
Aber in MVVM und Software Architecture Kontext, versuchen Sie es in Bezug auf Abhängigkeiten und Testbarkeit zu betrachten. Eine VM, die MessagBox direkt aufruft, ist viel schwieriger zu testen. –
Warum erstellen Sie nicht einfach einen 'IAlertService', um' MessageBox' genau so zu behandeln wie bei Dialogen? – MickyD