2015-07-01 5 views
2

Я новичок в MVVM и я следую за инструментами MVVM Light. Для реализации функции окна сообщения я искал и получил эту exampleКак написать тестовый пример для служб Dialog MVVM Light

Точки я не понимаю,

  1. Класса DialogService является то, что мы должны создать наследование IDialogService ??

Если это так, например, в классе после наследуя интерфейс мы должны написать что-то вроде ниже

public Task<bool> ShowMessage(string message, string title, string buttonConfirmText, string buttonCancelText, Action<bool> afterHideCallback) 
{ 
      //Here a kind of this implemetation i need to do ? 
      //For example sake i didn't include the parameters. 
    MessageBox.Show(); 
} 

Если это верно в модели представления, мы просто dialogueServices .ShowMessage (prms ....)? Итак, как это можно проверить?

Например, если он является файловым браузером, если мы вызываем этот метод в модульном тесте в соответствии с пониманием, он откроет браузер файлов. Как это можно реализовать?

Поскольку я очень к этому шаблону, я нахожу трудность в понимании.

Просьба представить образец реализации или любую ссылку.

EDIT

Я передал этот link также. В комментарии было сказано о его ответственности за точку зрения. Я был более смущен. В общем, по крайней мере, для диалога подтверждения, как мы это сделаем?

Спасибо.

ответ

2

Не смешивайте логику интерфейса в логике ViewModel/Business. Вы должны разделять проблемы, такие как бизнес-логика, логика пользовательского интерфейса.

Предлагаю вам воспользоваться услугами MvvmLight Messenger. Ваш ViewModel должен опубликовать сообщение «есть информационное диалоговое окно для показа», и соответствующее представление должно регистрироваться, слушать и обрабатывать это сообщение.

Пример:

ViewModel

public void SomeViewModelMethod() { 
    if (somethingWentWrong) 
     Messenger.Default.Publish(new ShowInformationalDialogMessage(title,msg)); 
} 

Посмотреть

.. OnLoaded { 
    Messenger.Default.Register<ShowInformationalDialogMessage>(() => { 
     UI LOGIC CODE 
    }); 
} 

Чтобы проверить этот случай нужно просто зарегистрироваться на публикуемые сообщения в тестовом модуле класса и утверждать, что это сообщение логика была казнены.

Смежные вопросы