Я пытаюсь реализовать шаблон проектирования IView для MVVM, который позволяет ViewModel взаимодействовать с пользователем, используя реализованный класс IView. Интерфейс IView имеет такие функции, как Prompt, Alert & Confirm. У меня есть три реализации интерфейса IView: CommandLineInteraction, WPFInteraction и TelerikInteraction. Первые два схожи по поведению (то есть они синхронны). Третий работает асинхронно.
Я хочу, чтобы TelerikInteraction работал синхронно. Это означает, что код, следующий за вызовом RadWindow.Confirm () или RadWindow.Prompt (), должен ждать, пока пользователь не будет взаимодействовать.
Ниже приведен фрагмент кода всех трех реализаций:
//CommandLine Implementation
public CustomConfirmResult Confirm(string message) {
Console.WriteLine(message);
Console.WriteLine("[Y]es [N]o");
string s = Console.ReadLine();
if(s == y || s == Y)
return CustomConfirmResult.Yes;
else
return CustomConfirmResult.No;
}
//Windows Implementation
public CustomConfirmResult Confirm(string message) {
MessageBoxResult mbr = MessageBox.Show(message, "", MessageBoxButton.OKCancel);
if(mbr == MessageBoxResult.OK)
return CustomConfirmResult.Yes;
else
return CustomConfirmResult.No;
}
//Telerik Implementation
public CustomConfirmResult Confirm(string message) {
CustomConfirmResult result;
RadWindow.Confirm(new DialogParameters{
Content=message,
Closed = (o1, e1) =>{
if(e1.DialogResult == true)
result = CustomConfirmResult.Yes;
else
result = CustomConfirmResult.No;
}
});
return result; //Executed before user interacts with the confirm dialog
}
Как мне сделать эти реализации похожими по поведению?
Спасибо
Сунил Кумар