Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 拆分视图viewmodel和不同项目中的模型-ViewModelLocator放在哪里_C#_Wpf_Visual Studio_Mvvm_Mvvm Light - Fatal编程技术网

C# 拆分视图viewmodel和不同项目中的模型-ViewModelLocator放在哪里

C# 拆分视图viewmodel和不同项目中的模型-ViewModelLocator放在哪里,c#,wpf,visual-studio,mvvm,mvvm-light,C#,Wpf,Visual Studio,Mvvm,Mvvm Light,将我的视图/视图模式/模型拆分为单独的visual studio项目。 我只在桌面上使用MVVMLight工具包5.3.0版、visual studio 2015、C#和WPF应用程序 溶液结构 项目1:UI(WPF应用程序) 项目2:视图(WPF用户控件库-用于存储所有视图) 项目3:ViewModel(类库-用于存储所有ViewModel) 项目4:模型(类库-存储所有模型) 项目5:通用(类库-使用我的模型和视图模型-存储我的-仅类和接口) 参考资料 公共:由模型和视图模型项目引

将我的视图/视图模式/模型拆分为单独的visual studio项目。 我只在桌面上使用MVVMLight工具包5.3.0版、visual studio 2015、C#和WPF应用程序

溶液结构


  • 项目1:UI(WPF应用程序)
  • 项目2:视图(WPF用户控件库-用于存储所有视图)
  • 项目3:ViewModel(类库-用于存储所有ViewModel)
  • 项目4:模型(类库-存储所有模型)
  • 项目5:通用(类库-使用我的模型和视图模型-存储我的-仅类和接口)
参考资料


  • 公共:由模型和视图模型项目引用
  • 模型:由ViewModel项目引用
  • 视图模型:由视图项目引用
  • 视图:我假设我的UI应该只引用我的视图项目
因此,遵循MVVM,我的视图了解ViewModel,只有我的ViewModel知道我的模型

现在我的问题是:

1) 我应该将ViewModelLocator放在哪个项目中?(现在我将其放置在我的视图项目中) 2) 我的UI项目应该只引用我的视图项目吗? 3) 在MVVM light项目中,“DataContext=“{Binding Main,Source={StaticResource Locator}}}”位于视图xaml文件和app.xaml中定义的定位器中。如何使用ViewModelLocator将视图绑定到视图模型

我查了好几篇帖子,都想不出这些答案

更新:

这是我为了让它工作而做的:

步骤1:更改引用:

  • UI引用视图和视图模型项目
  • 视图参照ViewModel项目
  • ViewModel引用了模型和公共模型
  • 模型参考通用
步骤2:将ViewModelLocator移动到ViewModel项目(从视图)

步骤3:在我的视图(usercontrol)中将datacontext添加回datacontext=“{Binding UserDetailsVM,Source={StaticResource Locator}”

步骤4:将添加到UI项目的my App.xaml

步骤5:在UI项目的主窗口中,我将我的视图添加到xaml中

注: -UI项目没有对MVVMLight的引用 -View和ViewModel项目都引用了MVVLightLibs和CommonServicesLocator


它可以工作,但这是正确的方法吗?

老实说,我要做的是将它重新组织为两个项目:一个
类库项目和一个
WPF
项目。因此,您当前的项目1和2将在一个项目中,而3、4和5在另一个项目中

至于回答您的问题,.我的结论是
WPF
应用程序不喜欢“共享”。因此,我将
ViewModelLocator
放在WPF项目中

如果您仍然希望继续进行所有的分离,我建议在两个提议的项目下使用不同的文件夹和名称空间

命名空间示例:

  • 对于ViewModelLocator、数据服务、存储服务、接口等:
    YourAppName.Services
  • 对于您的型号:
    YourAppName.Models
  • 对于您的ViewModels:
    YourAppName.ViewModels
  • 对于您的视图:
    YourAppName.Views

老实说,我要做的是将其重新组织为两个项目:一个
类库
项目和一个
WPF
项目。因此,您当前的项目1和2将在一个项目中,而3、4和5在另一个项目中

至于回答您的问题,.我的结论是
WPF
应用程序不喜欢“共享”。因此,我将
ViewModelLocator
放在WPF项目中

如果您仍然希望继续进行所有的分离,我建议在两个提议的项目下使用不同的文件夹和名称空间

命名空间示例:

  • 对于ViewModelLocator、数据服务、存储服务、接口等:
    YourAppName.Services
  • 对于您的型号:
    YourAppName.Models
  • 对于您的ViewModels:
    YourAppName.ViewModels
  • 对于您的视图:
    YourAppName.Views

我很确定这个问题没有明确的答案。如果拆分对您和其他开发人员有意义,那么就去做吧。如果您想看看另一个例子,我举了一个简单的例子:我在这里解释,我很确定这个问题没有明确的答案。如果拆分对您有意义如果你想看看另一个例子,我举了一个简单的例子:我在这里解释