Диалог ошибки в MVVM Light Toolkit

Я использую набор инструментов MVVM light в приложении WPF и получаю данные из внешнего источника. Моя модель MainViewModel выглядит так:

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

Я не могу отправить сообщение (как это сделано здесь) для просмотра, потому что ModelView создается до View, поэтому никто не может получать сообщения и показывать диалог. Как правильно решить эту проблему?


person shtkuh    schedule 22.12.2011    source источник
comment
вы используете внедрение зависимостей?   -  person vidalsasoon    schedule 27.12.2011


Ответы (2)


Вы должны генерировать исключения из конструктора только при инициализации не работает. В этом случае вы можете начать получение данных при загрузке представления. Вы можете вызвать команду виртуальной машины из загруженного события с помощью Поведение прикрепленной команды.

person Tim Cools    schedule 22.12.2011

Используя технику из публикации, которую вы связали, я бы сделал что-то вроде этого:

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);
    }
}
person snurre    schedule 22.12.2011
comment
В вопросе конкретно указано, что View еще не создан. - person cadrell0; 22.12.2011