首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >M-V-VM设计问题。从ViewModel调用视图

M-V-VM设计问题。从ViewModel调用视图
EN

Stack Overflow用户
提问于 2008-11-19 19:13:12
回答 5查看 7.4K关注 0票数 18

我刚刚开始研究WPF应用程序的M-V-VM。到目前为止,除了这个特殊的问题之外,所有的事情都是有意义的。

我有一个ViewModel,我把它叫做Search。此ViewModel绑定到数据网格并列出项目的结果。现在,我有一个命令需要调出另一种观点,项目的详细信息。

在搜索视图中显示另一个视图的逻辑似乎是不正确的,它根本就不是可测试的。

下面是我的ViewModel实现,它是不可测试的……

代码语言:javascript
运行
复制
public class SearchViewModel
{
   public void SelectItem()
   {
     // I want to call the DetailsView from here
     // this seems wrong, and is untestable
     var detailsView = new DetailsView();
     detailsView.Show();
   }
}

在这个模式中,显示来自ViewModel方法的视图的逻辑在哪里?

EN

Stack Overflow用户

发布于 2008-11-20 21:27:11

正如基夫所说:

视图永远不应该实例化在UI层“下面”的任何地方。VM位于该领域的下方,因此这里不是放置该逻辑的地方(正如您已经意识到的那样)。

几乎总是会有一些UI级事件指示需要创建视图。在您的示例中,它可能是数据网格上的行(双击)单击事件。这将是一个新的地方,并显示您的DetailsView窗口。

您必须认识到,M-V-VM与MVC或MVP等其他模式略有不同。ViewModel不直接了解UI。打开另一个视图是特定于视图的功能。视图模型不应该关心什么或者有多少视图在使用它的数据。我很可能永远不会通过命令打开视图。

票数 19
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/303006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档