自动将事件绑定到依赖项属性值

时间:2015-08-16 23:49:52

标签: c# wpf binding command

我正在尝试设置从ToggleButton控件派生的自定义用户控件。

我想设置两个新命令,CheckedCommand和UncheckedCommand。

我已经定义了如下命令,并且能够绑定它们。我正在通过一些内部事件解雇他们。一切都很好。

但是我希望能够让这些命令禁用按钮,就像通常的命令接口使用CanExecute一样。据我所知,我需要使用CanExecuteChanged事件并在此处设置IsEnabled属性。但是,当我想绑定此事件时,我查看了使用PropertyChangedCallback的{​​{1}}事件,但之后如何取消订阅以前绑定的任何命令。

这一切看起来有点复杂,我错过了一些简单的东西,或者这只是它的方式。

DependancyProperty

1 个答案:

答案 0 :(得分:0)

我可能不了解您的具体要求,但总的来说,我不会这样做。 WPF主要设计为数据驱动,而在这里您实现了事件驱动的通知。事件是老式的WinForms处理方式,它们的添加主要是为了便于从WinForms轻松过渡到新的数据绑定架构。

IMO这里更“正确”的解决方案是公开一个布尔依赖属性,即与复选框中的“Checked”属性基本相同。然后,您的控件的用户可以将该属性绑定到其视图模型中的布尔属性,只要状态发生更改,就会调用其setter。第二个“启用”DP将允许您和您的用户控制是否应该启用控件,再次类似于它在Checkbox中的实现方式。

要问一个明显的问题,虽然它是你的复选框功能,那么为什么你不只是模板复选框?你真的需要一个用户控制来实现你想要实现的目标吗?