我应该如何从ViewModel触发警报?

Kev*_*vin 5 .net design-patterns mvvm

我问过一些我认为具有良好设计意识的同事的问题.有趣的是,我收到了不同的回复.那么您认为哪种选择最适合MVVM模式?为什么?

假设我需要在$ $ 10k以上时显示警告图标.

  • 选项1:VM具有属性"Amount",XAML触发器和/或绑定设置元素可见性
  • 选项2:VM具有属性"ShowAlert",XAML使用bool到可见性转换器绑定可见性
  • 选项3:VM具有属性"AlertVisibility",XAML直接绑定
  • 选项4:其他(请解释)

感谢您的反馈!

sll*_*sll 4

在您的情况下,您有明确的业务规则Shown WHEN > 10k,它应该封装在 ViewModel 而不是 View 中,因为 View 知道数据将如何显示,而不是何时和为什么。

因此,我建议公开AmountShowAlert属性,并避免公开AlertVisibility属性,因为它会分散此类 WPF View 特定事物,例如可见性枚举状态(隐藏、折叠等)

如果您希望公开,AlertVisibility您将来可能会面临以下问题 - 试想一下,较新版本的 WPF 摆脱了烦人的Visibility枚举,在这种情况下,您必须修改 ViewModel 以公开新的 Visibility 基础结构/属性以保持 View 正常工作很好,但是当 View 行为封装在 ViewModel 中时,从 MVVM 的角度来看,这是不正确的。因此,保持简单并公开简单的bool AlertVisible属性。

编辑:关于评论中的命名建议

绝对同意!我建议重命名AmountVisibleIsAmountSpecified或类似的名称。