我正在尝试找到在MVVM中将Views和ViewModels最佳耦合的方法,我选择了使用类型化DataTemplates的ViewModel-first方法,如这篇文章和这个答案所描述的。我正在使用Prism并且有多个模块,每个模块都有自己的项目/类库。
我的问题是:我的DataTemplates应该放在哪个位置?
- 我应该将DataTemplates放在与其渲染的类型/ViewModels相同的项目中的Resource Dictionary中吗?
- 我应该将DataTemplates放在具有应用程序MainWindow(即Shell.xaml)的项目中的Resource Dictionary中吗?
- 这些Resource Dictionaries应该添加到
App.Current.MainWindow.Resources.MergedDictionaries
中吗?
希望这提供了足够的信息来描述我的问题。
更新:请参考所选答案的评论。
DataTemplates
来自定义在ListBox
中显示数据的方式,并且可以通过引用其x:Key
将此DataTemplate
重复使用并应用于多个ListBoxes
。但是根据Josh Smith的文章(见上文),我相信我也可以使用类型化的DataTemplates
将视图/用户控件与ViewModel
耦合。也就是说,如果我向ListBox
添加一个ViewModel
对象,WPF将使用DataTemplate
中指定的用户控件呈现ViewModel
(而不是使用ToString())。我理解得对吗? - Blake Mumford