PRISM + TabControl +验证=痛苦

本文关键字:痛苦 TabControl PRISM 验证 | 更新日期: 2023-09-27 18:19:11

在我的应用程序中,我有多个选项卡的对话框。我使用PrismTabControl注册视图。

我想要的是一个验证整个对话框禁用/启用保存按钮

问题:目前我们有一个视图触发的验证。表示每个绑定项都实现了IDataErrorInfo接口。当视图显示时,绑定触发接口并在UI上显示错误。ControlHasError属性设置为true,保存按钮被禁用。

但是直到显示视图才触发验证。我应该将验证移动到ViewModel并自行验证Properties,还是有解决方案可以在TabControl中验证非活动视图?

PRISM + TabControl +验证=痛苦

没有足够的信息来回答你的问题,所以我只能猜测。首先,您必须了解TabControl中没有非活动视图。在TabControls可视树中一次只有一个视图,那就是选中的选项卡。这意味着其他视图将从可视树中移除,直到它们被选中。不过这并不重要,因为验证是通过ViewModel控制的。ViewModel很可能有一个Command绑定到Save按钮。这个命令应该有一个CanExecute定义,返回IDataErrorInfo。= null(表示没有错误)。在这里,您将检查对象的有效性。如果有错误则返回false,如果没有则返回true。Hook到对象的属性更改事件,并调用SaveCommand。方法来重新检查按钮的状态。

如果每个视图选项卡都有自己的ViewModel,因此它有自己的Save命令,我建议使用CompositeCommand。这真的是一个未知数,因为我不知道你是如何构建你的对话框、视图或ViewModels的。