不使用 MVVM 开发 WPF 软件

2023-11-21

我们想开始开发一个中间桌面软件。 我们决定使用 WPF。 我们不想使用 MVVM 模式。 因为我们对MVVM不熟悉,而且也有时间限制。 是否真的可以不使用MVVM模式来开发WPF应用程序(使用3层架构但不使用MVVM) 虽然它的性能比 win 形式更好吗?


使用wpf时不需要依赖MVVM。实际上,正确使用 wpf 的关键是:

  • 使用命令而不是事件(您可能在没有意识到的情况下执行此操作,但请检查以确保)
  • 使用数据绑定而不是直接从控件获取值
  • 设置数据上下文并绑定到该数据上下文,而不是绑定到后面的代码

MVVM 对于这两件事非常有效,但不是必需的。具体来说,MVVM 需要 3 层严格的关注点分离,这可以使用 MVP 轻松完成。

就性能而言,这实际上取决于应用程序运行的平台和编码风格。如果您在没有像样显卡的计算机上运行它,那么 winForms 可能会表现得更好,因为 wpf 可能会恢复为软件渲染,这会非常慢。如果您需要制作 3D 图形,那么 wpf 确实是您唯一的选择。

其他人建议不要使用 MVVM.

如何使用 wpf 进行 MVP 的代码项目示例

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

不使用 MVVM 开发 WPF 软件 的相关文章

随机推荐

  • 为什么 android.arch.navigation 会导致程序类型已存在:android.support.v4.os.ResultReceiver$1?

    我使用的是Android Studio版本 Android Studio 3 2 Canary 14 Build AI 181 4668 68 32 4763614 built on May 4 2018 JRE 1 8 0 152 rel
  • Node.js 异步函数 *定义*

    拜托 只是为了澄清我脑子里的一些事情 我习惯于在库中使用异步函数进行编写 但是如何编写自己的异步函数呢 为了说明我的问题 我编写了一个名为 MadMathz 的模块 我知道以下是异步函数的示例用法 load module var mM re
  • Java - 异常应该在哪里以及如何使用?

    我正在阅读一些有关 Java 异常处理的内容 以便能够编写更好的代码 好吧 我承认 我有罪 我用了太多的 try catch 块 我用过ex printStackTrace 在捕获中 甚至没有使用适当的记录器 实际上是System out
  • 如何在 Swift 中将代理对转换为 Unicode 标量

    下面的例子取自字符串和字符文档 价值55357 U D83D以十六进制表示 和56374 U DC36以十六进制表示 是形成 Unicode 标量的代理对U 1F436 哪一个是DOG FACE特点 有什么办法可以走另一个方向吗 也就是说
  • android 4.0.x 上的 font-face 不起作用

    我正在使用 JQM 构建移动应用程序 我需要使用 font face 声明自己的字体 我包括字体css file fonts css作为我的 index html 中第一个加载的 css 文件并声明font faces像这样 font fa
  • 任务内的 Await Task.WhenAll() 不等待

    我的问题是 当任务有 Task WhenAll 调用 运行其他任务 时 WhenAll 行使消耗代码继续执行 这与我的预期不同 因此 下面的代码在调用 Task WhenAll 时立即输出 完成 而不是在其参数中的所有任务完成后 Just
  • 如何使用 Kendo UI Grid 的 SetDataSource 方法

    有人能够使用 kendo UI 网格的 setdatasource 方法吗 我相信这用于分配可以在后期分配给网格的数据源 也用于网格刷新目的 但是我找不到任何正确的文档来解释如何使用此方法并制作可刷新的网格 我正在尝试通过远程 ajax 调
  • 在 ActiveRecord::Schema 上切换连接

    我正在使用 Rails 2 3 5 和 mysql 我有一个模型 TableA 和另一个模型 TableB TableA 完全没问题 但我需要交换 TableB 的连接 我正在连接到其他地方的另一台服务器 因此我必须检查该表是否存在 如果没
  • Gradle 失败可能是因为该 Flutter 应用程序中的 AndroidX 不兼容

    从以下位置更新依赖项类路径时会出现此问题 com android tools build gradle 3 2 1 to com android tools build gradle 3 3 2 项目级 构建 gradle buildscr
  • 除了乘法和求幂之外,星号在 Python 中还有什么作用? [复制]

    这个问题在这里已经有答案了 在 Peter Norvig 的用 Python 编写的 Lisp 解释器中 http norvig com lispy html 他定义了 Lispeval如下 def eval x env global en
  • C# 中的运算符重载

    class Point private int m PointX private int m PointY public Point int x int y m PointX x m PointY y public static Point
  • C++ 中是否有一种惯用的方法来比较多态类型的对象等效性?

    我有 Base 指针指向多态类型的两个实例 我需要确定引用的对象是否等效 我当前的方法是首先使用 RTTI 检查类型相等性 如果类型相等 则调用虚拟 is equivalent 函数 有更惯用的方法吗 对于大多数派生类来说 等效只是意味着成
  • 从 X 数组中删除 NaN 行以及 Y 中的相应行

    我有一个带有 NaN 的 X 数组 我可以删除带有 NaN 的行 如下所示 import numpy as np x x np isnan x 但我有一个对应的Y数组 assert len x len y True x x np isnan
  • 如何在 Core Graphics 中生成 RGBA 图像?

    我正在尝试从文本生成 RGBA8 图像以用作 OpenGL ES 2 0 纹理 UIImage imageFromText NSString text UIFont font UIFont systemFontOfSize 20 0 CGS
  • 如何使用VBA中的CopyMemory在内存映射文件中存储数据和从内存映射文件中取出数据?

    我正在尝试构建一个分布式计算系统 该系统使用内存映射文件来通过 VBA 协调多台联网 PC 之间的工作 换句话说 我想让一组联网的计算机以协调的方式同时在一个可以轻松划分为不同部分的项目上工作 一台 PC 需要 13 个多小时才能完成该项目
  • 为什么 Request.QueryString 是只读的?

    我认为如果没有重定向 您就无法更改服务器上的查询字符串 但这段代码对我有用 Request QueryString 编辑 我很惊讶 所以这是我对此的疑问 为什么 Request QueryString 是只读的 为什么这段代码 黑客有效 如
  • 使用 Amazon SNS/SQS 在 PHP 中推送通知?

    在我的网站上 我想像 Stackoverflow 那样推送评论通知 Amazon SNS SQS 似乎提供了一个框架来执行此操作 但我很难在网络上找到除 hello world 等效项之外的任何代码 解释 通过阅读 AWS SNS SQS
  • 库项目构建版本高于使用它的项目

    我正在使用 Android 库项目 我已将我的库项目构建目标设置为 11 以使用 api 11 并具有前向兼容性 并且我正在检查最小 sdk 版本 以便应用程序在操作系统 我的其他项目将构建目标设置为 8 所以我想知道将库项目构建版本设置为
  • Boost.Log:支持文件名和行号

    我正在努力让我的团队远离log4cxx并尝试使用Boost Log v2反而 我们目前的log4cxx 模式相当简单 log4cxx helpers Properties prop prop setProperty log4j rootLo
  • 不使用 MVVM 开发 WPF 软件

    我们想开始开发一个中间桌面软件 我们决定使用 WPF 我们不想使用 MVVM 模式 因为我们对MVVM不熟悉 而且也有时间限制 是否真的可以不使用MVVM模式来开发WPF应用程序 使用3层架构但不使用MVVM 虽然它的性能比 win 形式更