我问过一些我认为具有良好设计感的同事的问题。有趣的是,我收到了不同的回复。那么你认为哪种选择最适合MVVM模式?为什么?
假设我需要在$ $ 10k以上时显示警告图标。
感谢您的反馈!
答案 0 :(得分:4)
在您的情况下,您有明确的业务规则Shown WHEN > 10k
,它应该封装在ViewModel而不是View中,因为View知道HOW数据将显示而不是WHEN和WHY。
因此,我建议公开Amount
和ShowAlert
属性并避免公开AlertVisibility
属性,因为它会分散此类WPF查看特定内容,例如Visibility枚举状态(隐藏,折叠) ,...)
如果您希望公开AlertVisibility
,您将来可能面临以下问题 - 想象一下,WPF的新版本摆脱了烦人的Visibility枚举,在这种情况下您需要修改ViewModel公开新的Visibility基础结构/属性以保持View正常工作,但是当ViewModel中封装了View行为时,从MVVM角度来看这是不正确的。所以Keep it Simple并公开直截了当的bool AlertVisible
属性。
编辑关于评论中的命名建议
绝对同意!我建议将AmountVisible
重命名为IsAmountSpecified
或类似的内容。
答案 1 :(得分:0)
我会通过转换器获取我的视图的警报图标可见性绑定金额值,该转换器采用10000的参数。转换器将返回可见或折叠。
当VM超过阈值时,您也可以让VM发送消息,并且任何关注它的视图或其他视图模型都可以对消息作出反应。