问题描述
有这样一个场景,主窗体(MainWwindow)上有4个Button,点击每个Button都会加载一个UserControl(关闭正在打开的)每个UserControl绑定了自己的ViewModel那么MainWindow的ViewModel里,用什么方式加载UserControl?最好是不要在MainWwindow.cs里写代码;
解决方案
解决方案二:
写一个方法根据点击不同的button返回不同的UserControl。
解决方案三:
引用楼主qq_25876223的回复:
有这样一个场景,主窗体(MainWwindow)上有4个Button,点击每个Button都会加载一个UserControl(关闭正在打开的)每个UserControl绑定了自己的ViewModel那么MainWindow的ViewModel里,用什么方式加载UserControl?最好是不要在MainWwindow.cs里写代码;
这是不可能的。ViewModel跟UI没有非常直接的关系,动态加载用户控件的动作必须是V的职责。在ViewModel层,它只应该管理“状态值”,例如当前应该显示什么界面的这个名称而已,而动态加载用户控件则应该是写在V的。不是所有的东西都可以理论化,任何一种设计模式永远都会存在着“灰色地带”,只不过这种东西要少用到“恰好合适”的程度,而如果强调要“根本不用”反而是成事不足败事有余的。
解决方案四:
当我们使用几十个现成的应用控件时,我们可以采用MVVM方式来将控件的“属性”与业务模型进行双向绑定。但是假设我们现成的控件不够用的时候,需要比较深入的技术的时候,那么传统的技术不能丢掉。不是什么层次都用MVVM的。
时间: 2024-12-31 01:55:51