繁体   English   中英

在WPF中使用INotifyDataErrorInfo和嵌入式UserControl(与Caliburn.Micro)一起使用

[英]Using INotifyDataErrorInfo with embedded UserControl in WPF (with Caliburn.Micro)

我已经为使用Caliburn.Micro实现MVVM模式的相当复杂的WPF应用程序继承了一些代码。 它使用自动绑定的视图来使用Caliburn命名约定来查看模型。 视图模型从实现INotifyDataErrorInfo的类继承,并且Fluent Validation用于生成特定于字段的错误。 这非常完美,除了在一种情况下,我将用户控件嵌入到多个不同的视图中,并且需要验证该用户控件中的UI元素。

嵌入式用户控件具有其自己的视图模型,该模型不实现INotifyDataErrorInfo。 可以说我们在验证父视图时生成的验证消息不会传播到UI进行显示。

我不太确定我需要在此处显示哪些代码来说明问题,因此该问题的确更具概念性-问题是:

在我的场景中,我应该在嵌入式用户控件后面的视图模型上实现,还是通过嵌套在嵌套用户控件内的控件的属性名称使父视图在其视图模型上调用GetErrors()?

我希望这是有道理的-我对WPF还是很陌生!

我最终解决了这个问题。 问题原来是我有一个绑定到嵌套视图的单独的视图模型,并且该视图模型没有继承自实现INotifyDataErrorInfo的类。 可以说这里的规则似乎是,您可以拥有具有自己的视图模型(数据上下文)的嵌入式用户控件,并且仍然具有验证行为,但是层次结构中的每个视图模型都必须实现INotifyDataErrorInfo,否则绑定到它们的UI元素将无法实现。不会收到错误通知。 在我的案例中,很难看到问题,因为Caliburn.Micro和AutoFac进行了很多自动装配,而这在调试环境中是很难看到的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM