Designdecision:MVVM和WPF有两个视图?

时间:2012-06-11 19:39:51

标签: c# wpf mvvm

我希望我没有监督一个陈述相同的旧问题,但据我所知,他们更专业。

我想知道,如果我“在正确的轨道上”。在过去,我用C#(主要是.net-3.5)做了一些WinForms的东西,现在我想使用/学习WPF来进行一些小项目。目前,当我使用WPF(.net4)时,我正在阅读有关MVVM和其他实现细节的内容。

我需要做的是:

我想为oracle-database提供一种searchtool。数据库连接等已修复,启动并运行。所以在这方面没有工作要做。新工具应该在windows7-desktop-pc windows7-tablet-pc上运行。所以我想/需要两个不同的视图,一个通常的鼠标键盘交互gui和一个优化的触摸输入。

所以我想到了使用一个模型,一个视图模型和两个视图。我不想通过Unity或类似的东西使用IOC,因为这会增加一层复杂性,这对于这个小小的项目来说是过度的。

我的实际问题:

这是正确的方法(使用一个View-Model的2个视图)还是我在这里完全错误(也许DataTemplates在这里会更好?)?有什么好方法可以实现这个?

提前致谢!

3 个答案:

答案 0 :(得分:2)

拥有ViewModel背后的想法是在一个与视图特定内容没有直接依赖关系的地方整合视图相关逻辑。所以,是的,我会说你的方法很好。

DataTemplates似乎更适合“较小的”View模型,因此虽然DataTemplateSelector可以很好地根据您的情况选择模板,我认为值得投入一些额外的代码,可以为您完成全尺寸控件

您必须弄清楚是否可以自动检测用户使用该应用的方式,并且可能会使您的视图名称遵循惯例,以便可以或多或少地自动选择视图。

答案 1 :(得分:1)

我认为你走在正确的轨道上。

这是使用MVVM的完美示例。您可以更改视图或具有多个视图外观,而无需更改后端。

我可以看到使用DataTemplates和DataTemplateSelector,但如果您的视图变得复杂,那么可读性和可维护性将会恶化。

答案 2 :(得分:0)

我也同意你是在正确的轨道上但是对于一个更大的项目,嵌套用户控件或许多很多视图,值得查看具有两种不同样式的单个视图。最简单的是,触控风格会有更大的输入控制。这意味着只需要在一个地方(单个View)进行绑定逻辑的更改,而不是在它使用的两个Views中进行。