Я довольно новичок в WPF, и мне нужно реализовать настраиваемое окно сообщений после шаблона MVVM, но без использования каких-либо вспомогательных библиотек MVVM. Это поле сообщения будет использоваться для предоставления информации о непредвиденных ошибках, возникающих в приложении, - общем сообщении + стеке в деталях. Я обрабатываю событие DispatcherUnhandledException для этого, и я использую это настраиваемое окно сообщений в обработчике этого события.Корректная реализация пользовательского MessageBox WPF с использованием шаблона MVVM
void Current_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
{
CustomMessageBoxViewModel messageBox = new CustomMessageBoxViewModel();
messageBox.ShowMessage(e.Exception.Message, e.Exception.StackTrace);
CustomMessageBoxWindow messageBoxWindow = new CustomMessageBoxWindow();
messageBoxWindow.DataContext = messageBox;
messageBoxWindow.Show();
e.Handled = true;
}
Не могли бы вы сказать мне, если это правильное использование шаблона MVVM, и если нет, то, что я мог сделать, чтобы исправить это?
Спасибо за ваш ответ, я исправил свой код с вашими предложениями, и это упростило мою модель просмотра. Кроме того, я не знал разницы между Show и ShowDialog, но теперь я изменил Show() на ShowDialog(). –
Я рассматриваю возможность завершения приложения, если возникает необработанное исключение, но я совершенно не уверен. –
Прекращение приложения - хорошая идея, поскольку необработанное исключение может испортить ваши данные. До этого вы должны, по крайней мере, регистрировать детали исключения, если не просто показывать его пользователю, чтобы скопировать/вставить и отправить обратно. Проверьте ExceptionViewer на http://www.codeproject.com/Tips/469452/WPF-ExceptionViewer, как захватить внутренние детали любого исключения (код IIRC не работает в нескольких местах - исключение NullReferenceException), и вы можете в конечном итоге сделать MVVM версию такого зрителя для пользователей вашего приложения. – too