MVVM Light Toolkit中的错误对话框

本文关键字:错误 对话框 Light Toolkit MVVM | 更新日期: 2023-09-27 18:18:31

我在WPF应用程序中使用MVVM光工具包,并从外部源获取数据。我的MainViewModel c'tor看起来像这样:

    public MainViewModel()
    {
        try
        {
            GetData();
        }
        catch (Exception e)
        {
            //here i want to show error dialog
        }
    }

我不能发送消息(像这里一样)给视图,因为ModelView是在视图之前创建的,所以没有人可以接收消息和显示对话框。解决这个问题的正确方法是什么?

MVVM Light Toolkit中的错误对话框

应该只在初始化失败时从构造函数抛出异常。在这种情况下,您可以在加载视图时开始检索数据。您可以使用附加命令行为从加载的事件中调用VM的命令。

使用你链接的文章中的技巧,我会这样做:

public MainViewModel()
{
    try
    {
        GetData();
    }
    catch (Exception e)
    {
        Messenger.Default.Send(new DialogMessage(this, e.Message, MessageBoxCallback) { Caption = "Error!" });
    }
}
private void MessageBoxCallback(MessageBoxResult result)
{
    // Stuff that happens after dialog is closed
}

public class View1 : UserControl
{
    public View1()
    {
        InitializeComponent();
        Messenger.Default.Register<DialogMessage>(this, DialogMessageReceived);
    }
    private void DialogMessageReceived(DialogMessage msg)
    {
            MessageBox.Show(msg.Content, msg.Caption, msg.Button, msg.Icon, msg.DefaultResult, msg.Options);
    }
}