将我的视图/ viewmode / model拆分为单独的visual studio项目。 我正在使用MVVMLight工具包版本5.3.0,Visual Studio 2015,仅用于桌面的C#和WPF应用程序
解决方案结构
引用
所以关注MVVM,我的View只知道ViewModel,而我的ViewModel知道我的模型。
所以现在我的问题:
1)我在哪个项目中放置了ViewModelLocator? (现在我将它放在我的View项目中) 2)我的UI项目是否应仅引用我的View项目? 3)在MVVM灯项目中,“DataContext =”{Binding Main,Source = {StaticResource Locator}}“位于View xaml文件中,定位器在app.xaml中定义。如何使用View将我的View绑定到ViewModel ViewModelLocator?
我查了几篇帖子,无法找出这些答案
更新
这是我为了让它发挥作用而做的:
第1步:更改了引用:
第2步:将ViewModelLocator移动到ViewModel项目(从View中)
步骤3:在我的View(usercontrol)中添加了datacontext作为DataContext =“{Binding UserDetailsVM,Source = {StaticResource Locator}}”
第4步:将我的App.xaml添加到UI项目
第5步:在我的UI项目的MainWindow中,我在xaml中添加了我的视图
注意: - UI项目没有对MVVMLight的引用 - View和ViewModel项目都引用了MVVLightLibs和CommonServicesLocator
它有效,但这是正确的做法吗?
答案 0 :(得分:0)
老实说,我要做的是将其重组为两个项目:Class Library
项目和WPF
项目。因此,您当前的项目1和2将在一个项目中,而3,4和5在另一个项目中。
至于回答你的问题,I too encountered an issue with ViewModelLocator。我断定WPF
应用程序不喜欢“分享”。所以,我把ViewModelLocator
放在了WPF项目中。
如果您仍然想要进行所有分离,我建议在两个提议的项目中使用不同的文件夹和命名空间。
命名空间示例:
YourAppName.Services
YourAppName.Models
YourAppName.ViewModels
YourAppName.Views