在 WPF 中使用命令绑定时处理异常的最佳实践是什么?

2024-02-16

我正在 WPF 应用程序中使用 MVVM 模式。在几个地方,我将命令绑定到视图中的输入元素,如以下 XAML 所示:

<Button Command="{Binding TheClickCommand}" >Click</>

在我的视图模型中执行命令时处理抛出的异常的最佳实践是什么 - 即通知视图出现问题的最佳方法是什么?我可以使用 IDataErrorInfo 模式吗?或者对于这种情况是否有其他内置模式?


我讨厌这个答案,但这确实取决于上下文。

今天我可能会使用IoC http://en.wikipedia.org/wiki/Inversion_of_control, 要得到日志服务 or 通知服务或两者兼而有之,并在出现问题时采取行动。明天我可能会很高兴吃生的消息框.Show()某处在调度程序未处理异常事件处理程序。或者也许我会写我自己的附加属性ala

<Button loc:Commanding.ExceptionAwareCommand="{loc:CommandExtension 
          Command={Binding TheClickCommand}, 
          FallBackCammand={Binding ErrorHandlerCommand}}" />

并与之共存...

答案可能是这样的:“选择两个类之间通信的最佳方法并使用它”。抱歉,不具体……也许其他人会更具体。

注意:答案中提供的接口名称不是 WPF 标准。我仅用它们作为示例。

Cheers

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

在 WPF 中使用命令绑定时处理异常的最佳实践是什么? 的相关文章

随机推荐

  • 使用 git-svn:拉取、合并还是变基?

    我一直在与 git git svn 学习曲线作斗争 昨晚 作为学习曲线的一部分 我做了一些非常非常糟糕的事情 我已经纠正了它 但我希望以我的方式理解错误 我有一个 svn 存储库 我从中克隆了主干和分支 我忽略了标签 因为我们不处理这些标签
  • tinyMCE模糊事件

    你好 当用户在tinyMCE文本区域中完成书写并单击外部某处 onBlur 时 我想做一些事情 到目前为止我已经尝试过 id topic text parent live blur function alert asd I saw id t
  • 为什么在 C++ 中我们需要使用 `int main` 而不是 `void main`? [复制]

    这个问题在这里已经有答案了 为什么我们需要使用int main并不是void main in C 简短的回答是因为 C 标准要求main 回来int 您可能知道 返回值main 运行时库使用函数作为进程的退出代码 Unix 和 Win32
  • 如何从切片中删除最后一个元素?

    我见过有人说只需通过附加旧切片来创建一个新切片 slc append slc item slc item 1 但是如果你想删除切片中的最后一个元素怎么办 如果您尝试更换i 最后一个元素 与i 1 它返回越界错误 因为没有i 1 您可以使用l
  • Keras“pickle_safe”:Python 中的“pickle 安全”或“不可 picklable”是什么意思?

    Keras fit generator 有一个参数pickle safe默认为False 如果有的话 训练可以跑得更快ispickle safe 并相应地将标志设置为True 根据Kera 的文档 https keras io models
  • JMock- java.lang.NoSuchMethodError: org.hamcrest.Matcher.describeMismatch()

    我知道解决方案是以某种方式确保 Junit 在 hamcrest 之后加载 我有一个 intellij 项目 在其中设置了一个外部库 其中包含 JUnit 和 JMock 以及 hamcrest 我怎样才能确保这个错误不会出现 junit
  • 迭代 Numpy 矩阵行以每行应用一个函数?

    我希望能够迭代矩阵以将函数应用于每一行 我该如何为 Numpy 矩阵做到这一点 您可以使用numpy apply along axis 假设你的数组是二维的 你可以像下面这样使用它 import numpy as np myarray np
  • 零长度数组

    我正在重构一些旧代码 并发现一些包含零长度数组的结构 如下 当然 警告被 pragma 抑制 但我无法通过包含此类结构的 新 结构创建 错误 2233 数组 byData 用作指针 但为什么不使用指针呢 或者长度为1的数组 当然 没有添加任
  • Ruby class_eval 方法

    我想弄清楚如何动态创建方法 class MyClass def initialize dynamic methods arr Array new dynamic methods arr each m self class class eva
  • Kotlin 中的普通类和数据类有什么区别?

    我尝试解决任务 6 DataClass 科特林公案 https github com vicboma1 Kotlin Koans named arguments 当我在代码中使用普通类时 测试用例失败 这是我的数据类代码 data clas
  • CMakeExternalProject_Add() 和 FindPackage()

    是否有正确的方法来查找图书馆 通过FindPackage 是用ExternalProject Add 问题是 CMake 无法在 CMake 时找到该库 因为外部库是在编译时构建的 我知道在超级构建中构建库和项目时可以组合这两个 CMake
  • 为什么投票机不开源? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 嗯 这只是与编程相关 但我想今天是选举日 对吧 是否有一个很好的理由说明为什么它们不开源 不一定是开源的 因为任何人都可以做出贡献 但开源是因为
  • 我可以在 Javascript 中识别(图形输入板)笔压吗?

    有没有办法使用 javascript 来识别笔压 最好我不想使用 Flash 并尝试将其作为纯 JS 完成 编辑 好吧 我意识到 Wacom 平板电脑有可能实现这一点 因为它们附带的软件可以与其 javascript api 配合使用 从而
  • 使用 pandas 忽略来自 openpyxl 的 UserWarning

    我有大量必须加载的 xlsm 文件 每个 Excel 文件有 6 个工作表 因此 我使用 pandas 打开每个 Excel 文件 for excel file in files list with pd ExcelFile excel f
  • .Net 中字符串(或任何其他对象)的内存使用情况

    我写了这个小测试程序 using System namespace GCMemTest class Program static void Main string args System GC Collect System Diagnost
  • WordPress 预览_帖子_链接

    我试图在 WordPress 上发布时更改默认的 预览帖子 按钮 因为该网站安装了被黑客入侵的 WordPress 并且帖子预览不在应有的位置 我找到了钩子preview post link现在我只是想弄清楚如何制作一个小插件来解决这个问题
  • 更改构造函数原型时出现的问题

    我目前正在阅读 Stoyan Stefanov 的书 面向对象的 JavaScript 我偶然发现了一个有趣的问题 这是代码 var shape type shape getType function return this type fu
  • Python 中的解释与动态调度惩罚

    我观看了 Brandon Rhodes 关于 Cython 的演讲 EXE 的日子即将到来 Brandon 在 09 30 提到 对于特定的一小段代码 跳过解释可以带来 40 的加速 而跳过分配和调度则可以带来 574 的加速 10 10
  • 使用 Spring Cloud 连接器访问 CloudFoundry 用户提供的服务

    我正在尝试使用 Spring Cloud 来使用 Cloud Foundry 应用程序中的通用 REST 服务 该服务是使用Spring Boot创建的 如下 package com something RestController pub
  • 在 WPF 中使用命令绑定时处理异常的最佳实践是什么?

    我正在 WPF 应用程序中使用 MVVM 模式 在几个地方 我将命令绑定到视图中的输入元素 如以下 XAML 所示