Catel 中的嵌套验证

Posted

技术标签:

【中文标题】Catel 中的嵌套验证【英文标题】:Nested Validation in Catel 【发布时间】:2014-11-25 15:04:28 【问题描述】:

在我的 Catel 选项卡控件上,我有 3 个选项卡项。每个都有 Views 和 ViewModels 并且有验证。它们也是 3 种不同的东西(没有共同点,顺便说一句)。当显示带有选项卡控件的视图时,未检测到验证错误。只有当我单击一个选项卡项并且该选项卡项内容出现验证错误时,我才会收到有关验证错误的警报。

选项卡控件是否提供一种方法来指示选项卡项是否存在验证错误(选项卡项标题周围的红色方块,就像验证失败的文本框一样)?

我想了解我在标签项上遇到的验证错误,这些错误是不可见的,无需逐个检查。

【问题讨论】:

【参考方案1】:

TabControl 是 WPF 中一个非常复杂的控件。请注意,它只会显示当前选项卡,而不是其他视图(它们将被卸载)。

为了解决这个问题,Catel 提供了自己的 TabControl,您可以在其中设置选项卡的行为:

    LazyLoading => 使用延迟加载加载所有选项卡,但之后将选项卡保留在内存中。 LazyLoadingUnloadOthers => 使用延迟加载加载所有选项卡。加载一个标签后,所有其他已加载的标签都将被卸载。 EagerLoading => 加载选项卡控件后立即加载所有选项卡。 EagerLoadingOnFirstUse => 首次使用任何选项卡时加载所有选项卡。

欲了解更多信息,请参阅https://catelproject.atlassian.net/wiki/display/CTL/TabControl

【讨论】:

太棒了!效果很好!谢谢。不过,我还有另外两个问题;如何在嵌套用户控件上获得类似的功能,特别是如果我有一个命令按钮更改该嵌套控件上的属性,而该属性必须导致对外部用户控件进行验证检查?那么,有没有一种方法可以设置显示验证错误的选项卡控件的红色边框,使其围绕特定选项卡项而不是整个控件? 如果你想这样做,你必须设置标签项(标题)的样式并使用验证装饰器,但这是一个全新的主题。关于嵌套验证:我们有一个可以使用 IValidationSummary 创建的命令。它应该会自动为您重新评估状态。请在文档中搜索它,不记得确切的名称。 很酷,谢谢。我之前确实看过 IValidationSummary。几天前我遇到了这个讨论:catel.codeplex.com/discussions/283521 并查看了最后的示例,但无法使其正常工作。我再看看。我也在尝试一些带有 InterestedIn 属性的东西

以上是关于Catel 中的嵌套验证的主要内容,如果未能解决你的问题,请参考以下文章

Catel WPF 延迟验证

从 Catel WPF UserControl 中的 ResourceDictionary 中绑定

验证数组中的 Laravel 嵌套规则

如果 Rails 表单中的另一个字段为空,则验证嵌套字段

使用 Spring 验证器验证嵌套对象列表?

laravel 5.8 中的嵌套替代验证 required_without