2

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

Solution:
  Project:
    FolderView
    FolderViewModel
    FolderModel

我想将结构更改为

Solution:
  ProjectView
  ProjectViewModel
  ProjectModel

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

我知道如果遵循命名约定,Catel 会自动扫描项目以查找 Viewmodel。

我无法在第二个结构上完成这项工作,任何建议都会被预处理。

编辑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 时它不起作用。

4

1 回答 1

3

Catel 使用了许多不同的命名约定。大多数情况下,它通过检查同一项目中的 /Views、/ViewModels、/Models 来做到这一点。

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

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

您可能想要自定义ViewLocatorViewModelLocator

于 2013-04-19T11:03:20.827 回答