WPF 中 MVVM 的项目结构

2024-03-10

在 WPF 中使用 MVVM 时最终得到的项目结构是什么?

从我现在看到的教程来看,他们通常有文件夹:Model、ViewModel 和 看法。

在模型中,您可以放置​​像 Person 这样的类来捕获数据 和逻辑。

在 ViewModel 中,您实例化 Model 中定义的类。该视图包含 .xaml 文件。

编辑:我编辑我的原始帖子以发送示例项目结构。 我有与此相关的问题。我如何组织这些: 应用程序配置 应用程序.xaml 主窗口.xaml

我应该像现在一样把它们放在外面还是应该把它们放在某个文件夹中?


您已经描述了通常或常见的文件夹布局。根据经验,我更喜欢为模型数据类型添加单独的文件夹(或大型应用程序中的项目),例如典型的Person你提到的课程。我这样做的原因是因为这通常会成为最大的项目之一。我还将它分为以下子文件夹:

DataTypes
    Collections
    Enums
    Interfaces

我还有单独的应用程序文件夹(或大型应用程序中的项目)Converter类、扩展方法类、实用程序(或服务)类。最后,我有与应用程序文件夹结构非常匹配的测试项目。总的来说,我的文件夹大致如下所示:

Solution

    Third Party Libraries <<< (Solution Folder)

    StartUp Project
        Images
        Resources

    Converters

    DataTypes
        Collections
        Enums
        Interfaces <<< (For Data Type classes)

    Extensions

    Models
        Data Controllers
        Data Providers
        Interfaces <<< (For swapping Model classes out in test projects)

    Utilities (Or Services)
        Interfaces <<< (For swapping Utilities classes out in test projects)

    View Models
        Commands

    Views
        Attached Properties
        Controls

更新>>>

项目与文件夹一样,只是提供分隔级别。它们还帮助我规划我的应用程序名称空间。例如,代码类中Collections文件夹/项目将位于ApplicationName.DataTypes.Collections命名空间。课程在Data Providers文件夹/项目将有ApplicationName.Models.DataProviders命名空间。

此外,在大型应用程序中,我的项目名称来自它们在该层次结构中的位置......例如,我的DataTypes项目实际上被称为ApplicationName.DataTypes and my Models项目名为ApplicationName.Models. The Collections and DataProviders部分是文件夹,以及第二级以上的所有项目,例如。Enums, Images, Commands, etc.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF 中 MVVM 的项目结构 的相关文章

  • 尝试了解使用服务打开对话框

    我已经阅读了有关使用 mvvm 模式打开对话框的讨论 我看过几个使用服务的示例 但我不明白所有部分如何组合在一起 我发布这个问题寻求指导 以了解我应该阅读哪些内容 以更好地理解我所缺少的内容 我将在下面发布我所拥有的内容 它确实有效 但从我
  • 按扩展名过滤搜索文件返回太多结果

    我正在开发一个 C 控制台应用程序 它必须管理 Windows 操作系统上的文件 我需要获取具有特定扩展名的文件名 列表 我找到了很多解决方案 最建议的是以下一种 HANDLE hFind WIN32 FIND DATA data hFin
  • 未找到 Boost 库,但编译正常

    我正在尝试在 C 中使用 boost 的文件系统 使用时看起来编译没问题 c c Analyse c o Analyse o g W Wall L usr local lib lboost filesystem lboost system
  • WPF:在关闭事件触发之前,不会提交对具有焦点的文本框的更改

    我有一个用于编辑数据库信息的 WPF 窗口 它使用实体框架对象表示 当用户关闭窗口时 我想在 Closing 事件中注意到信息是否已更改 并显示一个消息框 提供将更改保存到数据库的信息 不幸的是 在编辑失去焦点之前 对当前焦点编辑的更改不会
  • 无法注册时间触发的后台任务

    对于 Windows 8 应用程序 在 C Xaml 中 我尝试注册后台任务 很难说 但我想我的后台任务已正确注册 但是当我单击调试位置工具栏上的后台任务名称时 我的应用程序停止工作 没有任何消息 我查看了事件查看器上的日志 得到 具有入口
  • cpp.react库的C++源代码中奇怪的“->* []”表达式

    这是我在文档中找到的 C 片段cpp react 库 https github com schlangster cpp react implicit parallelism auto in D MakeVar 0 auto op1 in g
  • 如何在 C# Designer.cs 代码中使用常量字符串?

    如何在 designer cs 文件中引用常量字符串 一个直接的答案是在我的 cs 文件中创建一个私有字符串变量 然后编辑 Designer cs 文件以使用此变量 而不是对字符串进行硬编码 但设计者不喜欢这样抛出错误 我明白为什么这行不通
  • 即使没有异步,CallContext.LogicalGetData 也会恢复。为什么?

    我注意到CallContext LogicalSetData LogicalGetData不按照我期望的方式工作 内部设置的值async方法得到恢复即使没有异步或任何类型的线程切换 无论如何 这是一个简单的例子 using System u
  • Eigen 和 OpenMP:由于错误共享和线程开销而没有并行化

    系统规格 Intel Xeon E7 v3 处理器 4 插槽 16 核 插槽 2 线程 核心 Eigen 系列和 C 的使用 以下是代码片段的串行实现 Eigen VectorXd get Row const int j const int
  • 什么是空终止字符串?

    它与什么不同标准 字符串 http www cplusplus com reference string string 字符串 实际上只是一个数组chars 空终止字符串是指其中包含空字符的字符串 0 标记字符串的结尾 不一定是数组的结尾
  • 带有移动向前/向后按钮的自定义列表框

    我有一个带有左 右重复按钮的自定义列表框 可以使用内容模板滚动其内容 如下所示
  • 从网页运行 ClickOnce 应用程序,无需用户操作

    我们有一个基于 Java 的 Web 应用程序以及用 C 编写的相同应用程序 如果 java 检查器发现客户端计算机上没有安装 Java 则应该运行该应用程序 这个想法是运行 C 单击一次 http en wikipedia org wik
  • 已发布的 .Net Core 应用程序警告安装 .Net Core,但它已安装

    我制作了一个 WPF 和控制台应用程序 供某人在我无法访问的私人服务器上使用 我使用 Visual Studio 2019 的内置 发布向导 来创建依赖于框架的单文件应用程序 当该人打开 WPF 应用程序时 他们会看到标准警告 他们单击 是
  • 如何递归取消引用指针(C++03)?

    我正在尝试在 C 中递归地取消引用指针 如果传递一个对象 那就是not一个指针 这包括智能指针 我只想返回对象本身 如果可能的话通过引用返回 我有这个代码 template
  • 在 C# 中为父窗体中的子窗体控件添加事件处理程序

    我有两种形式 一种是带有按钮和文本框的父表单 单击该按钮时 将打开一个对话框 该子窗体又包含一个文本框和一个按钮 现在我想要的是 每当子表单文本框中的文本更改时 父表单文本框中的文本会自动更改 为了获得这个 我所做的是 Form3 f3 n
  • 将二变量 std::function 转换为单变量 std::function

    我有一个函数 它获取两个值 x 和 y 并返回结果 std function lt double double double gt mult double x double y return x y 现在我想得到一个常量 y 的单变量函数
  • 如何解压 msgpack 文件?

    我正在将 msgpack 编码的数据写入文件 在编写时 我只是使用 C API 的 fbuffer 如 我为示例删除了所有错误处理 FILE fp fopen filename ab msgpack packer pk msgpack pa
  • Visual Studio 2015 - Web 项目上缺少共享项目参考选项卡

    我从 MSDN 订阅升级到 Visual Studio 2015 因为我非常兴奋地阅读有关共享项目的信息 当我们想要做的只是重用代码时 不再需要在依赖项中管理 21382 个 nuget 包 所以我构建了一个测试共享项目 其中包含一些代码
  • C++:二叉树所有节点值的总和

    我正在准备面试 我被一个二叉树问题困住了 我们如何计算二叉树所有节点中存在的值的总和 优雅的递归解决方案 伪代码 def sum node if node NULL return 0 return node gt value sum nod
  • 当用户更改 Windows 中的语言键盘布局时如何通知?

    I want to show a message to user when the user changes the language keyboard layout of Windows for example from EN to FR

随机推荐

  • 为什么Delete既是DDL又是DML语句

    我目前正在阅读 Microsoft 官方书籍 数据库管理基础知识 准备参加考试 我了解 DDL 和 DML 是什么 但 Microsoft 将 DELETE 显示为 DDL 和 DML 语句 我已经用谷歌搜索过这一点 但我无法证实或否认这一
  • 关于weak_ptr的线程安全性

    std shared ptr
  • 使用 Java 进行 AWS S3 文件搜索

    我们使用 java 类从 AWS s3 存储桶下载文件 代码如下 inputStream AWSFileUtil getInputStream AWSConnectionUtil getS3Object null cdn generalse
  • 从 Java 应用程序调用 Servlet

    我想从 Java 应用程序调用 Servlet 问题是 该调用似乎没有到达 Servlet 我没有收到任何错误 但没有到达 Servlet 中的第一个输出 doPost 如果我在网络浏览器中打开 URL 我当然会得到不支持 GET 等错误
  • 如何阻止 dbentityentry.currentvalues.setvalues 尝试更改实体键值

    我正在使用以下代码使用从我的代码收集的新信息来更新实体对象 我在用实体框架5 我使用以下扩展方法 作为我在 EF4 中使用的重新附加代码的替代方法 public static void ApplyValues this object cur
  • 如何强制 WPF 应用程序在管理员模式下运行

    我有一个 WPF 应用程序 可以访问本地计算机上的 Windows 服务 任务计划程序 当我部署此 WPF 应用程序并在没有 以管理员身份运行 的情况下运行它时 它会失败 因为它无法访问本地计算机上的 Windows 服务和任务计划程序 如
  • 将事件绑定到角度指令内的 $(document)

    我有一个实现选择框的指令 现在 当选择框打开并且我单击其外部的某个位置 文档中的任何其他位置 时 我需要它折叠 这个 JQuery 代码在我的指令中工作 但我想以 有角度的方式 执行它 document bind click functio
  • 将未定义的参数传递给函数 - 检查变量是否存在[重复]

    这个问题在这里已经有答案了 考虑以下 JavaScript function getType obj return typeof obj alert typeof obj alerts undefined correctly alert g
  • 将 ExpressJS 与 nginx 结合使用时出现 502 Bad Gateway

    如果我像这样运行我的expressjs应用程序 coffee server coffee并导航至localhost 8080 一切都很好 但是 当我使用以下配置使用 nginx 反向代理 8080 时 server listen 0 0 0
  • POST后通过REST返回内容可以吗?

    我正在使用 RESTlet 并且创建了一个资源 我通过重写处理 POSTacceptRepresentation method 客户端应该向我发送一些数据 然后我将其存储到数据库 将响应设置为 201 SUCCESS CREATED 我需要
  • 选择R中满足多个条件的数据帧索引

    我有一个数据框 我想制作满足多个条件的子集 或仅选择那些行 例如 a lt data frame a c a a b c b d b c 1 2 3 4 2 3 gt a a b 1 a 1 2 a 2 3 b 3 4 c 4 5 b 2
  • 如何防止 Firebase 身份验证用户自行更改电子邮件地址?

    根据 firebase 文档 客户端 SDK 似乎允许直接更新电子邮件地址以及用户个人资料信息 https firebase google com docs auth android manage users update a users
  • C# 获取进程的CPU使用率

    我想获取特定进程的 CPU 使用情况 这段代码 total cpu new PerformanceCounter Processor Processor Time Total 效果很好 该数字对应于 Windows 中的 CPU 使用率 数
  • 如何改变 matlab 图的线条颜色(如颜色图)?

    我有一个二维空间 其中定义了一个函数值 您可以将其视为流形 现在 我使用轮廓绘制了函数值 并将颜色图更改为比 jet 更柔和的颜色 到目前为止看起来相当不错 现在我想画一条线代表我的空间中随时间变化的状态 这也可以使用plot命令 但我想要
  • 如何跟踪 ASP.net 中的调试消息?

    简洁版本 我已经添加
  • Laravel Carbon,检索今天的日期和工作日?

    我正在使用 Carbon 将 2 个日期与今天的日期进行比较 但是我在数据库中还有另一个名为工作日的字段 其中包含以下值 莫 你 我们 所以我不仅想按日期搜索和输出 还想按工作日搜索 所以 public function show id t
  • 将 JSON 反序列化为 C# 类

    下面是我在成功创建新的 工作代码 条目后从 REST API 获得的 稍微 精简的响应 我需要将响应反序列化到某些类中 但我很困惑 作为参考 我在 NET 3 5 中使用 JSON NET 在 SQL Server 2008 R2 中的 S
  • 使用变量调用[数据库].[架构]

    我试图操纵这个现有的代码 因为在测试时 它没有引用表的确切位置 我的意思是 它不引用表的数据库名称和架构及其表名称 示例 如果该表被调用 package 那么目前它只是在更新语句 package 中输出 而不是 Holidays dbo p
  • 在 OnGroupClickListener 中获取单击的组

    如何检索在 ExpandableListView 的 OnGroupClickListener 中单击的组 我尝试过parent getItemAtPosition groupPosition 它返回组和子项 所以我想我必须将groupPo
  • WPF 中 MVVM 的项目结构

    在 WPF 中使用 MVVM 时最终得到的项目结构是什么 从我现在看到的教程来看 他们通常有文件夹 Model ViewModel 和 看法 在模型中 您可以放置 像 Person 这样的类来捕获数据 和逻辑 在 ViewModel 中 您