Tom*_*fka 7 wpf dialog model synchronous mvvm
我正在编写一个侦听网络连接的应用程序,当某些数据到达时,它会回复,并且根据传入的数据,它可能需要在回复之前询问用户(显示对话框).
我不知道如何在MV-VM架构中干净地完成这项工作:如果我只需要根据传入的数据更新GUI,事件和对可观察集合的绑定就很好,但是如果我在回复之前确实需要来自用户的anwer怎么办? ?
更糟糕的是,我希望同步这样做,因为我希望我的回复算法位于一个地方,而不是分成多个回调,并且不清楚"谁叫谁调用谁"的责任.
简单地说,像
HandleMessage(Message msg){
string reply;
if (msg.type == 1) {
reply = ...
} else {
string question = msg...
reply = ShowModalDialog(question); // MVVM violation!
}
sender.Send(reply);
}
Run Code Online (Sandbox Code Playgroud)
但是我不想从模型中调用view或viewmodel,因为模型需要可重用和可测试 - 我不希望在每次测试运行时都弹出对话框,这将违反MVVM!没有事件(据我所知,它们只是单向的,并且没有向后通道来获取对事件源的回复)或数据绑定,因为它将是异步的.
这可行吗?这是一个我问过几个测试驱动的开发传播者的问题,到目前为止,我没有得到实际可用的答案.然而,在处理过程中需要一些额外的输入是相当普遍的.
谢谢!
编辑:这是应用程序逻辑,所以它显然属于模型,即使在这种情况下它没有,我想知道在模型中业务逻辑例程中我真正需要用户输入的情况的解决方案.
| 归档时间: |
|
| 查看次数: |
441 次 |
| 最近记录: |