可以扩展WPF的ICommand控件行为吗?

时间:2016-08-09 00:06:25

标签: .net wpf icommand

当项目的Command属性绑定到ICommand时,您可以期望其启用状态依赖于ICommand.CanExecute。我想做的是创建一个继承自ICommand的接口,它提供了一个“MayExecute”来为控件可见性做同样的事情。如果没有有效地重新编译.NET,有没有一种干净的方法呢?

1 个答案:

答案 0 :(得分:1)

我希望通过附加财产来做这件事。我觉得它很可行(也很酷)。

附加属性将有一个方法来检查目标控件上Command的值是否实现IVanishingCommand或者您调用它的任何内容。如果是,则订阅MayExecuteChanged并根据需要覆盖控件的可见性。

Command获得新值时,您再次调用该方法(并确保取消订阅旧的Command事件)。

使用反射获取控件的Command依赖属性;例如,ButtonMenuItem都不会从任何公共基类继承Command

你也许可以用Style中的触发器来做到这一点 - 但是很快就会在所有不同的风格中做到这一点。