Catel MVVM结构

时间:2013-04-19 07:51:10

标签: c# wpf mvvm catel

我有一个简单的WPF应用程序,我使用Catel(3.5)框架来使用MVVM。 Visual Studio中Catel的默认结构是:

Solution:
  Project:
    FolderView
    FolderViewModel
    FolderModel

我想将结构更改为

Solution:
  ProjectView
  ProjectViewModel
  ProjectModel

通过这种方式我完全分离了M-VM-V并添加了参考。

我理解,如果遵守命名约定,Catel会自动扫描项目以查找Viewmodels。

我不能在第二个结构上进行这项工作,任何建议都会经过预处理。

编辑 1: 我在App.xaml.cs中添加了以下代码

var viewModelLocator = ServiceLocator.Default.ResolveType<IViewModelLocator>();
viewModelLocator.NamingConventions.Add("CatelV2ViewModel.ViewModels.[VW]ViewModel");

这对我不起作用,我不知道为什么。我确定我的程序集名称是正确的,我用 ViewModel 结束我的类名。

编辑 2: 如果我添加以下代码,该应用程序工作:

viewModelLocator.Register(typeof(MainWindow), typeof(MainWindowViewModel));

但是当我添加NamingConvention时,我仍然想知道它为什么会起作用。

1 个答案:

答案 0 :(得分:3)

Catel有许多不同的命名约定。大多数情况下,它通过检查同一项目中的/ Views,/ ViewModels,/ Models来实现。

有关Catel中命名约定的更多信息,请访问文档:

https://catelproject.atlassian.net/wiki/display/CTL/Naming+conventions

您可能想要自定义ViewLocatorViewModelLocator