1

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

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

我需要实现的是:

我想要一种用于 oracle 数据库的搜索工具。数据库连接等是固定的,已启动并正在运行。所以这部分没有工作可做。新工具应该在 windows7-desktop-pcwindows7-tablet-pc 上运行。所以我想要/需要两种不同的视图,一种是常用的鼠标键盘交互 GUI,另一种是针对触摸输入进行优化的。

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

我的实际问题:

这是正确的方法(使用 2 个视图和一个视图模型)还是我在这里完全错了(也许 DataTemplates 在这里会更好?)?有什么好的方法来实现这个?

提前致谢!

4

3 回答 3

2

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

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

您将必须弄清楚您是否可以自动检测用户使用应用程序的方式,并且可能让您的视图名称遵循约定,以便视图的选择可以或多或少地自动发生。

于 2012-06-11T19:56:30.483 回答
1

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

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

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

于 2012-06-11T19:56:22.577 回答
0

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

于 2012-06-12T09:32:51.987 回答