MVVM Exception Handling

后端 未结 3 1155
我寻月下人不归
我寻月下人不归 2021-02-04 14:22

I have a WPF Application that I have been trying to write in the MVVM style. If an Exception is thrown (like when a document is opened), I would like to display a MessageBox.

相关标签:
3条回答
  • 2021-02-04 15:13

    Have a look at Josh Smith's excellent MVVM Foundation on Codeplex. Specifically, have a look at the Messenger class, a lightweight way of passing messages between various ViewModel objects who do not need to be aware of each other.

    Also, I don't believe there is a hard-and-fast rule on "No code in the View", although it's best to be avoided if possible... remember that your XAML is simply .net code written in a declarative syntax; the code-behind is just C# or VB.net to supplement that (if absolutely necessary!)

    0 讨论(0)
  • 2021-02-04 15:19

    Use a service:

    public void SomeMethodInYourViewModel()
    {
        try
        {
            DoSomethingDangerous();
        }
        catch (Exception ex)
        {
            ServiceLocator.Resolve<IMessageService>().ShowMessage(ex.Message);
        }
    }
    

    You have now decoupled your VMs from the presentation of messages. You may even decide not to use the standard (ugly) message boxes at all and that won't affect your VMs.

    0 讨论(0)
  • 2021-02-04 15:21

    You might also like to just put an ErrorMessage string property on your ViewModel class that your View can bind to.

    0 讨论(0)
提交回复
热议问题