我正在尝试为 MVVM 设计模式实现 IView,它允许 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
}
如何使这些实现在行为上相似?
谢谢,
苏尼尔·库马尔