gpt4 book ai didi

c# - ViewModel 中的 WPF 命令和异常

转载 作者:太空狗 更新时间:2023-10-29 20:55:24 27 4
gpt4 key购买 nike

按钮有一个 Command 绑定(bind)到 ViewModel(它在 ViewModel 中运行一些 Save 方法)。方法 Save 可能会失败并引发异常。

捕获这些异常的最佳实践是什么?显示一个 MessageBox 就足够了,但我不想在 ViewModel 中显示它(这不是正确的方法)。

最佳答案

1 - 我不认为这是“不正确的方式”。

ViewModel 中引发Exception 通常是ViewModel 逻辑的一部分。因此,显示 MessageBox 不会是“糟糕的方式”。请记住,MVVM 的实际目标是不是消除所有代码隐藏,而是明确区分 UI 逻辑和业务逻辑。处理业务对象时会发生异常——您可以在 ViewModel

中处理它

2 - 无论如何,如果你想坚持这种方法(我认为它是极端主义的 MVVM - 呵呵 -)你可以:

  • 使用验证器(您听说过 Binding.ValidationRules 吗?如果没有,this article should be useful for you)确保输入的数据不会产生异常
  • 如果发生Exception,定义一个特定的返回值,即。 try-catch,如果你碰巧输入了 catch,你将返回一个特定的错误值,UI 会将其视为错误(例如,你可以使用 Trigger 为字段着色如果已返回此特定错误值,则为红色)

无论如何,我再次认为有很多人希望通过消除所有可能的代码隐藏并引入复杂的模式(例如附加行为......)来应用“极端主义 MVVM”,只是为了遵循以下要求在我看来实际上是胡说八道。我不会说我是绝对正确的,但我更愿意将 MVVM 视为一种模式,它可以简化我的编码方式,而不是一种模式,它会给我带来很多基本事情的痛苦(例如,我见过人们实现 AttachedBehaviors对于一个简单的 DoubleClick 操作。当 DoubleClick 事件被触发时,我个人添加了一个 EventHandler 触发 DoubleClick 命令到我的 MVVM。针对 100 行类的 1 行代码 + 另一种方法的 XAML 代码,选择你的一边。我相信一个简单的问题应该有一个简单的解决方案)

干杯!

关于c# - ViewModel 中的 WPF 命令和异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6199740/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com