Я потратил два дня, пытаясь это выяснить.
Я реализовал два способа работы с всплывающими окнами mvvm
Пример первого использования:
_childWindowController
.ShowDialogWithResult<AddNationalityPopup,AddNationalityPopupModel, AddNationalityResult>(
(result, a) =>
{
if (a.DialogResult.HasValue && a.DialogResult.Value)
{
if (result.NationalityCountryId.HasValue)
{
Background.NationalityCountryId = result.NationalityCountryId.Value;
Background.NationalityDescription = result.NationalityDescription;
}
}
});
Второй подход:
var window = _childWindowController.CreateDialog<AddNationalityPopup>();
window.Closed += (sender, args) =>
{
if (args.DialogResult.HasValue && args.DialogResult.Value)
{
var result = (AddNationalityResult)window.Result;
if (result.NationalityCountryId.HasValue)
{
Background.NationalityCountryId = result.NationalityCountryId.Value;
Background.NationalityDescription = result.NationalityDescription;
}
}
};
window.ShowDialog();
При первом подходе пользователь службы должен знать типы представления, модель представления и результат, чтобы иметь возможность отображать диалог
ВВторой интерфейс немного упрощен, но мне все еще нужно было знать, к какому типу приводить результат перед его использованием.
Вы когда-нибудь сталкивались с проблемой отображения диалога с моделью представления?
Какулучшить дизайн оконного сервиса?
Можете ли вы привести пример хорошей реализации диалогового сервиса?