当项目的Command属性绑定到ICommand时,您可以期望其启用状态依赖于ICommand.CanExecute。我想做的是创建一个继承自ICommand的接口,它提供了一个“MayExecute”来为控件可见性做同样的事情。如果没有有效地重新编译.NET,有没有一种干净的方法呢?
答案 0 :(得分:1)
我希望通过附加财产来做这件事。我觉得它很可行(也很酷)。
附加属性将有一个方法来检查目标控件上Command
的值是否实现IVanishingCommand
或者您调用它的任何内容。如果是,则订阅MayExecuteChanged
并根据需要覆盖控件的可见性。
当Command
获得新值时,您再次调用该方法(并确保取消订阅旧的Command
事件)。
使用反射获取控件的Command
依赖属性;例如,Button
和MenuItem
都不会从任何公共基类继承Command
。
你也许可以用Style中的触发器来做到这一点 - 但是很快就会在所有不同的风格中做到这一点。