gpt4 book ai didi

c# - 在不同的项目中 Split View View 模型和模型 - 我将 ViewModelLocator 放在哪里

转载 作者:行者123 更新时间:2023-12-03 10:43:37 25 4
gpt4 key购买 nike

将我的 View / View 模式/模型拆分为单独的 Visual Studio 项目。
我正在使用 MVVMLight 工具包 5.3.0 版、Visual Studio 2015、C# 和 WPF 应用程序仅用于桌面

解决方案结构

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

  • 引用

  • 常见:Model 和 ViewModel 项目引用
  • 模型:ViewModel 项目引用
  • ViewModel:被 View 项目引用
  • View:我假设我的 UI 应该只引用我的 View 项目

  • 所以跟随 MVVM,我的 View 只知道 ViewModel,而我的 ViewModel 知道我的 Model。

    所以现在我的问题:

    1) 我将 ViewModelLocator 放在哪个项目中? (现在我把它放在我的 View 项目中)
    2) 我的 UI 项目应该只引用我的 View 项目吗?
    3) 在 MVVM 轻项目中,“DataContext="{Binding Main, Source={StaticResource Locator}}"位于 View xaml 文件中,而 Locator 在 app.xaml 中定义。如何使用 View 模型定位器?

    我检查了几个帖子,无法弄清楚这些答案

    更新:

    这就是我让它工作的原因:

    第 1 步:更改引用:
  • UI 引用 View 和 ViewModel 项目
  • 查看引用 ViewModel 项目
  • ViewModel 引用 Model 和 Common
  • 型号引用 常见

  • 第 2 步:将 ViewModelLocator 移动到 ViewModel 项目(来自 View)

    第 3 步:将我的 View (用户控件)中的数据上下文添加回 DataContext="{Binding UserDetailsVM, Source={StaticResource Locator}}"

    第 4 步:添加到我的 UI 项目的 App.xaml

    第 5 步:在我的 UI 项目的 MainWindow 中,我在 xaml 中添加了我的 View 作为

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

    它有效,但这是正确的做法吗?

    最佳答案

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

    至于回答你的问题,I too encountered an issue with ViewModelLocator .我的结论是WPF应用程序不喜欢“分享”。所以,我把 ViewModelLocator在 WPF 项目中。

    如果您仍然想要所有的分离,我建议在两个提议的项目下使用不同的文件夹和命名空间。

    命名空间示例:

  • 对于您的 ViewModelLocator、数据服务、存储服务、接口(interface)等:YourAppName.Services
  • 对于您的型号:YourAppName.Models
  • 对于您的 ViewModel:YourAppName.ViewModels
  • 您的意见:YourAppName.Views
  • 关于c# - 在不同的项目中 Split View View 模型和模型 - 我将 ViewModelLocator 放在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39309295/

    25 4 0