나는 규칙을 위반하여 대화 상자를 구현했지만 최소한으로 줄이려고했다.
public void OpenDialog(DialogViewModel model)
{
this.MessengerInstance.Send<DialogViewModel, MainWindow>(model);
}
을 그리고 내 MainWindow를에 : 내 BaseViewModel의 방법 OpenDialog이
Messenger.Default.Register<DialogViewModel>(this, model =>
{
// Instantiate the dialog box
var dlg = new DialogWindow();
// Configure the dialog box
dlg.Owner = this;
dlg.Content = model;
// Open the dialog box modally
dlg.ShowDialog();
});
그런 식으로 난 단지 내 ViewModel을 내 MAINVIEW 사이의 느슨한 결합이있다. 그것에 대해
public void CloseDialog()
{
this.MessengerInstance.Send<PopUpAction, DialogWindow>(PopUpAction.Close);
}
(PopupAction 그냥 열거입니다) 내 DialogWindow 레지스터 :
Messenger.Default.Register<PopUpAction>(this, action =>
{
switch (action)
{
case PopUpAction.Close:
this.Close();
break;
}
});
당신은 또한 멀리 수신기를 떠날 수 당신은 폐쇄에 대해 동일한 작업을 수행 할 수 있습니다, 내 BaseDialogViewModel는 방법이있다 보기 클래스에서보기 클래스를 유지하기 위해 보낼 때, 그러나 그것은 받아 들일 수있는 해결책이라고 생각합니다. :)