1 - 我不相信这是"不正确的方式".
具有Exception
在升高ViewModel
通常是的一部分ViewModel
的逻辑.因此,表现出MessageBox
不会有"坏方法".请记住,MVVM的实际目标不是消除所有代码隐藏,而是实际上明确区分UI逻辑和业务逻辑.处理业务对象时会发生异常 - 您可以在中处理它ViewModel
2 - 无论如何你想坚持这种方法(我认为它是极端主义的MVVM - 嘿 - )你可以:
Binding.ValidationRules
?如果没有,本文对您有用),以确保输入的数据不会创建Exception
Exception
发生,则定义特定的返回值,即.try-catch,如果您碰巧输入catch,您将返回一个特定的Error值,该值将被UI视为错误(例如Trigger
,如果此特定错误值具有以下值,您可以使用a 为该字段着色为红色已退回)无论如何,我认为有很多人想要通过消除所有可能的代码隐藏并引入复杂模式(例如附加行为......)来应用"极端主义MVVM",只是为了遵循一个实际上是无意义的要求.我的看法.我不会说我是完全正确的,但我更喜欢看MVVM作为一种模式,它将简化我的编码方式,而不是一种模式,它会给我带来如此多的基本事物的痛苦(例如我见过人们实现AttachedBehaviors对于一个简单的DoubleClick操作.我个人添加了一个EventHandler,在DoubleClick事件被触发时向我的MVVM添加了一个DoubleClick命令.对于另一个方法,针对100行类+ XAML代码的1行代码,选择你的一方.我相信简单的问题应该有一个简单的解决方案)
干杯!