我应该在哪里定义我的datatemplates?

Bla*_*ord 10 wpf user-controls datatemplate mvvm

我正在尝试找出在MVVM中耦合我的Views和ViewModel的最佳方法,并且我已经使用类型化的 DataTemplates 确定了ViewModel优先方法,如本文本答案中所述.我正在使用Prism并拥有多个具有自己的项目/类库的模块.

我的问题是:我的DataTemplates在我的解决方案中应该在哪里?

  1. 我应该将DataTemplates放在资源字典中,该资源字典位于具有它呈现的类型/ ViewModels的同一项目中吗?
  2. 我应该将DataTemplates放在一个资源字典中,该字典位于具有应用程序MainWindow(即Shell.xaml)的项目中吗?
  3. 是否应该将这些资源字典添加到App.Current.MainWindow.Resources.MergedDictionaries

我希望这足以描述我正在尝试做的事情.

更新:查看所选答案的评论.

cho*_*dze 2

我确信这里最好的方法是使用 Themes\Generic.xaml 资源文件。这是 WPF/Silverlight 主题引擎使用的文件(它应该完全位于 Themes 文件夹中,并且名称完全是 Generic.xaml),并且包含通过整个应用程序共享的资源。您还可以在主题文件夹中创建名为 Generic.DataTemplates.xaml 的单独文件,并从 Generic.xaml 添加指向该文件的链接。Google 对 generic.xaml 了解很多,或者您可以在我的回答中看到更多详细信息:WPF Prism -Where to put Resources?