我正在重写基于Windows窗体的应用程序,我将使用WPF。 该应用程序在非常图形化的环境中严重依赖拖放技术。通过将元素拖动到网格上,移动它们,右键单击设置属性等来使用“设计”报告等,所有这些都保存到数据库中。还可以通过绘制流程图来控制程序流程,通过路由和决策制作,全部绘制在表单上,然后再保存到数据库中。
MVVM是否适用于这种应用,或者我是否试图在方孔中安装圆形钉。
你的想法非常适合。
答案 0 :(得分:24)
我的看法是使用MVVM,但不是虔诚的。
我的意思是,在您的视图中使用模型,但在需要时也会使用一些代码(拖放,双击)。找到一个有助于您发展的平衡,而不会让您疯狂。
答案 1 :(得分:5)
MVVM非常适合WPF。你能用WPF和MVVM进行拖放吗?你当然可以。尝试搜索“WPF拖放行为”
答案 2 :(得分:3)
使用MVVM有两个很好的理由:
正如几张海报所提到的,任何与UX相关的事件都可以在代码隐藏中处理,但您应该通过View Models公开和访问(读取和写入)数据,以便在视图中轻松绑定。
至于我在#2中提到的额外工作,您可以轻松地向App对象添加静态属性,以确定应用程序是否正在运行而不是在Blend中打开的View。如果View在Blend中打开,则利用模拟数据而不是进行数据访问调用。下面是一些示例代码,用于检查Blend是否打开了View:
if (Application.Current == null || Application.Current.GetType() == typeof(Application))
{
isInDesignMode = true;
}
else
{
isInDesignMode = false;
}
希望这有帮助。
答案 3 :(得分:1)
如果您正在寻找长期应用程序维护和可测试性,请确保您可以使用MVVM和WPF来完成这些工作。或者只是选择WPF。 MMVM初始学习曲线非常陡峭。
答案 4 :(得分:0)
像MVVM这样的模式是为了让生活更简单。因此,对于任何情况,如果您觉得这种模式给您带来了困难,请随意打破它或尝试别的东西。盲目跟随任何事情都无济于事。但无论如何MVVM还支持像Drag和Drop这样复杂的UI交互,我相信行为可以帮助你。在谷歌上搜索WPF拖动和放大放弃行为,你可以找到很多教程和代码来帮助你。