我为一个相当复杂的WPF应用程序继承了一些代码,它使用Caliburn.Micro实现MVVM模式。它使用自动绑定的视图来使用杯标命名约定查看模型。视图模型继承于实现INotifyDataErrorInfo的类,而Fluent验证用于生成特定于字段的错误。这是完美的,除非在一个场景中,我将一个用户控件嵌入到几个不同的视图中,并且需要验证该用户控件中的UI元素。
嵌入式用户控件有自己的视图模型,不实现INotifyDataErrorInfo。只需说明,我们在验证父视图时生成的验证消息不会传播到UI中以供显示。
我不太清楚我需要在这里展示什么代码来说明这个问题,所以这个问题实际上是概念性的--问题是:
我是我的场景,是在嵌入式用户控件后面的视图模型上实现,还是有其他方式让父视图调用其视图模型上的GetErrors(),其属性名称嵌套在嵌入式用户控件中?
我希望这是有意义的-我是非常新的WPF!
发布于 2014-11-03 14:14:17
我最终解决了这个问题。问题是,我有一个单独的视图模型绑定到嵌套视图,而且该视图模型没有继承实现INotifyDataErrorInfo的类。只需说明一下,这里的规则似乎是您可以拥有嵌入式用户控件,这些控件具有自己的视图模型(datacontext),并且仍然具有验证行为,但是层次结构中的每个视图模型都必须是implementINotifyDataErrorInfo,否则绑定到它们的UI元素不会收到错误通知。在我的例子中,很难看到问题,因为Caliburn.Micro和AutoFac做了很多在调试上下文中很难看到的自动连接。
https://stackoverflow.com/questions/26635992
复制相似问题