哪一个是wpf中MVVM模式的好习惯?

时间:2014-05-28 04:47:34

标签: c# wpf mvvm

我想通过使用MVVM模式开发我的wpf项目。我应该创建新文件夹来分隔Model,View,ViewModel还是为每个文件创建新项目?哪一个是好习惯?我下载了示例项目,一些项目有单独的文件夹,有些项目各有单独的项目。我提到this link。 但这并不是我的疑问。我问的是,为模型,视图和视图模型创建新项目是不错的做法还是创建新文件夹

4 个答案:

答案 0 :(得分:2)

这是一个重复的问题,因为您可以找到谢里登最有帮助的答案here

基本上,您需要确定项目的总体大小。如果您计划重复使用片段,则可能需要多个项目和不同级别的文件夹。如果您计划将应用程序的某些部分作为API提供,那么这也适用于您,那么您可能希望使用多个项目。

对于初学者,我建议你从小做起,把所有东西放在一个项目中。要学习MVVM,请不要关注项目结构,而应关注WPF和MVVM的工作方式。在了解了MVVM的工作原理后,可以随时重新考虑解决方案结构。

修改

答案是否定的,您永远不需要为项目创建文件夹或单独的项目。只是意识到在不同的文件夹下创建新的class es也会将该路径用作命名空间。因此,如果您创建ViewModels文件夹并向该文件夹添加class,则会在顶部看到namespace WpfApplication1.ViewModels。这也意味着您必须注意XAML文件中命名空间的位置。如果要在XAML文件中引用ViewModels文件夹中的类型,则需要执行<xmlns:vm="clr-namespace:WpfApplication1.ViewModels">之类的操作。缺点是如果您在ViewModels中有文件夹,则还需要在XAML中引用该命名空间。所以如果有ViewModels&gt;基础知识,您需要在XAML中使用两个名称空间,因为您无法在一个xmlns声明中引用所有子目录。

<xmlns:vm="clr-namespace:WpfApplication1.ViewModels">
<xmlns:vmBasics="clr-namespace:WpfApplication1.ViewModels.Basics">

另一种方法是使用文件夹并将类名称空间重命名为普通的namespace WpfApplication1,然后您只需要一个xmlns声明,就可以访问应用程序中的所有类型。

<xmlns:app="clr-namespace:WpfApplication1">

所以,如果不需要,不要复杂化;通常,学习阶段没有任何东西会如此复杂,需要多个项目。文件夹是可选的,但如果您使用它们,请了解副作用/解决方法。

答案 1 :(得分:1)

这实际上取决于您的使用案例。您是否有一个场景,您的视图,视图模型和模型可以在其他项目中单独重用?我的意思是,例如,你有一个场景,你只会在其他项目中使用你的模型。如果是,那么创建单独的项目以便重用它们是有意义的。但是,如果情况并非如此,最好将它们全部保存在一个项目中。

答案 2 :(得分:1)

文件夹仅用于创建结构和便于识别。实际上没有必要为View和ViewModel设置文件夹。

答案 3 :(得分:1)

我通常会为视图,ViewModel等创建文件夹。然后我会为视图和viewModels类提供描述性名称。如果你有几个页面我建议有子文件夹。一切都在一个项目中。但这是我的偏好。

例如:

查看&gt;销售&GT; WelcometoSalesPageView.xaml

视图模型&gt;销售&GT; WelcometoSalesPageViewModel.vb