MVVM 基于绑定和命令。我知道 , 和 commands 的绑定IsEnabled
可以IsReadOnly
帮助Visibility
实现CanExecute
将权限考虑在内的 GUI。
然而,我对这种方法有些怀疑。
第一个是需要伴随 VM 的每个涉及 ACL 逻辑的属性CanRead
| CanWrite
可以绑定到相应控件的属性。这意味着绑定的大量基础结构编码和 XAML 类型。解释原因的动态工具提示也可以添加到列表中。
第二个是 XAML 中的错误输入会破坏安全性,尤其是在读取权限方面:控制将保持可见。在大多数(不是所有)情况下,这个问题可以通过业务逻辑层解决,该层将属性保留为默认值。但是在“返回的路上”(VM->BL)系统必须只关心允许的属性。
安全被称为横切关注点。我了解具有拦截功能的 AOP 或 DI 如何帮助提高 BL 级别的安全性,但我没有关于在 MVVM 设计模式的上下文中为 GUI 实现所有这些东西的好主意。
请您分享您解决此问题的经验。