在 MVVM 中,ViewModel 响应视图中用户操作的最佳方式是什么?

2024-02-14

我在 MVVM 中的理解是:

  • View 知道 ViewModel
  • ViewModel 知道 Model
  • 但它不能向上工作,因此 Model 对 ViewModel 一无所知
  • 并且 ViewModel 对 View 一无所知

So ViewModel 如何响应用户在 View 上执行的操作,例如在文本框中输入内容或移动滑块等。

  1. 我明白这是完成的路由事件但我发现几乎所有 RoutedEvent 示例都在视图中使用 CodeBehind,而这正是 MVVM 中不再有的功能。

  2. 这样就剩下路由命令我在 MVVM 中找到了更多示例,但例如移动滑块实际上不是command从这个意义上说,它是一个事件,所以我想知道这是否真的应该使用。

  3. Then I 阅读建议 https://stackoverflow.com/questions/852441/fat-models-skinny-viewmodels-and-dumb-views-the-best-mvvm-approach/854824#854824例如 ”In MVVM 尽可能少地使用 RoutedEvents, and 无路由命令 at all." OK.

  4. 因此,例如在里面WPF 模型-视图-视图模型工具包 0.1 https://stackoverflow.com/questions/852441/fat-models-skinny-viewmodels-and-dumb-views-the-best-mvvm-approach/854824#854824来自 WPF 团队本身的项目,您有一个“委托命令”这看起来也是一种有趣的方式。

  5. 那么有些人也用“中继命令".

对于开发应用程序来说,做如此核心的事情会面临很多选择和困惑。

在 MVVM 中简单地完成我们过去 10 年使用 Code Behind 所做的事情的最佳方法是什么:

  • 创建按钮
  • 双击按钮
  • 编写处理代码

只是要明确的是,当人们提到委托命令 and 中继命令,他们实际上在谈论同一件事:ICommand 的实现,允许您传入委托。您可以互换使用它们。

就我而言,将视图 (XAML) 绑定到 ViewModel 中的 DelegateCommands 是实现 MVVM 的最佳方式。

我尽可能远离 RoutedEvents 和代码隐藏。

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

在 MVVM 中,ViewModel 响应视图中用户操作的最佳方式是什么? 的相关文章

  • 如何使用故事板更改wpf中网格行的高度

    我有一个Grid有 2 行
  • RichTextbox SelectionStart 返回错误的索引

    我需要向用户显示光标上文本的选择开始和长度 就像在 notepad exe 中一样 选择长度没有问题 因为 Richtextbox 支持带有开始和结束的选择属性 http msdn microsoft com en us library s
  • 输入按键的淘汰赛事件绑定会导致奇怪的行为

    长话短说 我希望用户能够在输入元素上按 Enter 键 并调用我的视图模型中的某些方法 这是我的 html 输入
  • WPF 画布缩放/变换以适合

    我重新发布这个问题 因为上次我没有得到太多答复 希望重新措辞可能有所帮助 本质上 我想做的是创建一个数据绑定画布 它将自动缩放其内容以 填充 可用空间 有点像缩放以适应操作 不幸的是 我的 WPF 技能还不是很强 我正在努力弄清楚如何完成最
  • WPF 中的填充弧

    I am trying to draw a figure something like this 我需要为每个弧段都有一个独特的元素 我可以根据需要处理事件并重新着色 我有点不确定如何在 WPF 中创建正确的几何图形 我可以根据圆的半径和与
  • WindowsFormsHost ZOrder

    看起来 WindowsFormsHost 控件被设置为显示在顶部 有没有办法更改其 z 顺序 以允许同一窗口上的其他 WPF 控件在 WindowsFormsHost 控件之上可见 不幸的是 不能 由于 winformshost 合成到 W
  • 从BackgroundWorker线程更新图像UI属性

    在我正在编写的 WPF 应用程序中 我有一个 TransformedBitmap 属性 该属性绑定到 UI 上的 Image 对象 每当我更改此属性时 图像就会更新 因此显示在屏幕上的图像也会更新 为了防止在检索下一张图像时 UI 冻结或变
  • 是否可以“缩放”WPF RichTextBox 中的文本?

    我注意到 WinForms RichTextBox 有一个ZoomFactor我认为这正是我想要的属性 不幸的是 WPF 变体似乎完全缺少此属性 有什么方法可以实现相同的功能 增加 减少整个文档的可见文本大小而不实际更改底层 RTF Upd
  • System.Windows.Controls.WebBrowser、System.Windows.Threading.Dispatcher 和 Windows 服务

    我正在尝试将一些 html 内容渲染为 Windows 服务中的位图 我正在使用 System Windows Controls WebBrowser 来执行渲染 基本渲染设置作为一个独立进程运行 并带有托管控件的 WPF 窗口 但作为服务
  • WPF 按钮需要单击两次才能触发 Click 事件

    我有一个 TabItem 其中包含一个日历控件和一个按钮 问题是 当日历的选择日期与先前选择的日期相同时 该按钮需要单击两次才能触发其 Click 事件 我实现了日历的 selectedDatesChanged 事件来解决当当前选择的日期与
  • 隐藏继承的成员

    我正在寻找某种方法来有效隐藏继承的成员 我有一个继承自公共基类的类库 一些较新的后代类继承了依赖属性 这些属性已变得残存 并且在使用时可能会有点混乱智能感知或使用视觉设计器中的类 这些类都是为 WPF 或 Silverlight 2 0 编
  • Visibility = IsCollapsed 是否跳过数据绑定部分?

    如果我将 StackPanel 或任何绑定区域设置为 折叠 数据会加载吗 它会触发它的 Loaded 事件吗 Yes 您的数据绑定将被评估 您的初始化事件将会触发 并且 您的 Loaded 事件将会触发 但在视觉树的部分中Visibilit
  • 我的 WPF 应用程序未触发 MainWindow_Loaded

    我目前正在关注Pluralsight C Fundamentals Part 1并在Classes and Objects视频部分指导我在 Visual Studio 中创建一个新的 WPF 应用程序并填写代码 这导致以下结果 namesp
  • 当 ValidationRules 无法共享时,在 DataTemplates 中重新使用绑定实例

    我正在寻找解决方案和 或为什么在 DataTemplate 中共享 Binding 实例背后的合理性 这最终归结为这样一个事实 在 DataTemplate 中 似乎没有办法为生成的每个控件强制在 DependencyProperty 上绑
  • 绑定到内部 ViewModel-Property

    我有一个 UserControl 其 ViewModel 类作为 DataContext XAML
  • 使用自定义视觉效果创建无边框窗户

    我想使用 WPF 创建一个看起来不像常规窗口的自定义窗口 我想要创建的窗口类似于MacOs窗口 标题居中 带有阴影效果 控件按钮位于窗口左侧 我确实创建了一个无边框窗口 但我有一些问题 1 如何在 XAML 中设置最大化 最小化和关闭按钮的
  • 如何禁用箭头键更改焦点

    我有一个 WPF 窗口 其中有一些控件 按钮 组框等 和一个大控件Viewport3D在一个Border 视口显示 3D 场景 我希望使用箭头键来移动其相机 问题 方向键总是将焦点改变到另一个UIElement 如何通过箭头键禁用焦点更改并
  • WPF 中可选择的 TextBlock 或带有格式化文本的 TextBox

    我遇到一种情况 我需要显示格式化文本 正常 粗体 突出显示 并且还应该是可选择的 以便用户可以复制文本 我使用了文本块 我可以使用内联内容流元素应用多种格式 但不幸的是它的文本不可选择 虽然文本框允许选择文本并复制到剪贴板 但它不允许我设置
  • 底部垂直滚动richtextbox [WPF]

    我有一个富文本框 当满了时我想自动滚动到底部 这可能吗 用xaml做这个吗 通过使用ScrollViewer ScrollChanged http msdn microsoft com en us library system window
  • wpf中的图像问题(图像不显示)

    我不明白为什么我无法在 WPF 中显示图像 也许我不小心修改了我的资源文件夹 这就是我没有显示的原因 所以我创建了一个新的 wpf 应用程序 我有这个 当我运行该程序时 我的图片显示为 为什么当我尝试在程序中执行相同的操作时 图像没有显示

随机推荐

  • Matplotlib 添加默认水印

    我在用着matplotlib对于工作和公司来说 政策是在我们制作的每个图上都包含水印 有没有办法设置matplotlib默认情况下执行此操作 我目前正在通过每个Axes对象到辅助函数中 该函数在左下角添加水印 import matplotl
  • 如何隐藏/显示UIimageview?

    void viewDidAppear BOOL animated super viewDidAppear animated CGRect viewRect CGRectMake 250 100 30 30 as UIImageView al
  • “政党模式”背后的原则和好处是什么?

    派对模型 是关系数据库设计的一种 模式 它至少有一部分涉及找到许多实体 例如客户 员工 合作伙伴等 之间的共性 并将其分解到一些更 抽象 的数据库表中 我想了解您对以下问题的想法 政党模式背后的核心原则和动力是什么 它规定您对数据模型做什么
  • hadoop pagerank运行时出现错误

    我已经在我的 vmware 上安装了 hadoop 并设计了我的 jar 文件 pagerank 运行以下命令 hadoop jar PageRank 1 0 0 jar PageRankDriver init 输入输出 2 出现以下错误
  • R 如何在另一个函数中将函数作为字符串传递

    对于这个小难题的任何帮助将不胜感激 我正在尝试向tq transmute函数从tidyquant包裹 参数的值是一个函数 但是我想将其作为字符串传递 在下面示例的范围内 我将通过 Shiny 传递它 selectInput 我已经尝试了所有
  • 如何检测地址/坐标中是否可以使用 Google 街景

    我正在制作一个使用 Google 街景图像 API 的应用程序 我可以毫无问题地根据地址 坐标获取街景图像 但是 我想检测特定地址是否有可用的街景图像 以便为没有街景图像的地址显示不同的行为 到目前为止我唯一的想法是读取返回图像的像素并检测
  • java: R 无法解析为变量

    我知道这个问题以前已经被问过 但我对此无能为力 我刚刚创建了一个新项目并收到此错误 当然 R java 文件没有被生成 我正在使用 JRE7 android 4 2 2 package com example myfirstapp impo
  • TensorFlow 中张量值的条件分配

    我想复制以下内容numpy代码在tensorflow 例如 我想分配一个0到先前值为的所有张量索引1 a np array 1 2 3 1 a a 1 0 a should be 0 2 3 0 如果我写类似的代码tensorflow我收到
  • 如何在Windows服务器上运行solr使其自动启动?

    如何在 Windows 服务器上运行 solr 使其自动启动 我运行它 java jar start jar 但我需要服务器自动执行此操作 使用您需要的命令创建一个批处理文件并在启动时运行它 一些these http windowsxp m
  • 场景生成器中的自定义控件 ClassNotFoundException

    我通过扩展现有控件创建了一个新控件 并且我想在我的 JavaFX 场景中使用这个新控件 我希望能够使用场景生成器编辑场景 但是将新控件添加到 FXML 文件后 我遇到了ClassNotFoundException打开场景生成器时 例如 这是
  • 为什么这段代码不会抛出 StackOverflow 异常

    在 clojure v1 6 0 中 这段代码会永远运行并消耗 100 的一个核心 defn average x y x y 2 defn improve guess x average guess x guess defn sqrt it
  • Spotify API - 在 Google Apps 脚本中检索有效访问令牌

    以下是 Spotify API 的文档 我使用的是隐式授权流程 https beta developer spotify com documentation general guides authorization guide implic
  • IntelliJ 中的 Cucumber.js 调试

    IntelliJ 有一个 Cucumber js 插件 这假设可以在 IDE 内启用运行和调试 cucumber js 的运行配置有效 但调试模式已停用 无法单击 调试 按钮 还有其他人有同样的问题并设法解决它吗 调试对我来说非常重要 谢谢
  • Python3 TypeError:列表索引必须是整数或切片,而不是 str

    我的任务是获取字符串 AAAABBBCCDAABBB 放入这样的列表中 A B C D A B 我现在已经为此工作了 2 个小时 但无法找到解决方案 到目前为止 这是我的代码 list string AAAABBBCCDAABBB i 1
  • 阅读 Facebook 中的消息

    我一直在尝试阅读来自特定用户 朋友 的消息 我在图形 API 中找不到有关查询 Facebook 消息中的消息或线程的正确文档 谁能帮帮我吗 您只能为使用您的应用程序的用户阅读消息 而不能为他的朋友阅读消息 这是一件好事 要为当前用户执行此
  • 为什么 JSF 将 UI 组件的状态保存在服务器上?

    JSF 在服务器端保存 UI 组件的状态到什么时间以及 UI 组件的状态信息具体何时被删除从服务器内存 当应用程序上的登录用户浏览页面时 组件的状态是否会继续在服务器上累积 我不明白在服务器上保持 UI 组件状态有什么好处 直接将验证 转换
  • 签署 Windows EXE 文件

    我有一个EXE http en wikipedia org wiki EXE我想要签署该文件 以便 Windows 不会警告最终用户来自 未知发布者 的应用程序 我不是 Windows 开发人员 所讨论的应用程序是从生成屏幕保护程序的应用程
  • Python:在类实例初始化之前修改传递的参数

    我正在尝试用 Python 实现简化的术语重写系统 TRS 符号代数系统 为此 我真的希望能够在类实例实例化过程中的特定情况下拦截和修改操作数 我想出的解决方案是创建一个元类来修改典型的call类对象 类型为 type 的行为 class
  • 如何在 Javascript 中说明多重图? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 这个问题正在寻找一种实用且简单的方法来使用 Javascript 绘制多重图 首先看this http
  • 在 MVVM 中,ViewModel 响应视图中用户操作的最佳方式是什么?

    我在 MVVM 中的理解是 View 知道 ViewModel ViewModel 知道 Model 但它不能向上工作 因此 Model 对 ViewModel 一无所知 并且 ViewModel 对 View 一无所知 So ViewMo