侦听对Wpf元素上IsEnabled的更改

侦听对Wpf元素上IsEnabled的更改,wpf,xaml,isenabled,Wpf,Xaml,Isenabled,我想监听WPF元素上IsEnabled属性的更改(以便在更改时可以运行一些公共代码),而不必在每个窗口/页面中加载代码 我还希望避免由于强事件侦听器而导致内存泄漏的任何潜在问题。我曾看到一些文章建议使用弱事件侦听器等,但对于一些看起来应该非常简单的事情来说,这似乎非常复杂 我不想为了做到这一点而必须对控件进行子类化,因为有几种控件类型(将来可能会更多),我希望在这些类型上侦听IsEnabled更改 有人想出了更简洁的方法来处理这个问题吗?解决这个问题的一个简单方法是创建一个自定义的附加属性,并设

我想监听WPF元素上IsEnabled属性的更改(以便在更改时可以运行一些公共代码),而不必在每个窗口/页面中加载代码

我还希望避免由于强事件侦听器而导致内存泄漏的任何潜在问题。我曾看到一些文章建议使用弱事件侦听器等,但对于一些看起来应该非常简单的事情来说,这似乎非常复杂

我不想为了做到这一点而必须对控件进行子类化,因为有几种控件类型(将来可能会更多),我希望在这些类型上侦听IsEnabled更改


有人想出了更简洁的方法来处理这个问题吗?

解决这个问题的一个简单方法是创建一个自定义的附加属性,并设置一个单向绑定,将IsEnabled属性作为源:

<Control IsEnabled={Binding IsEnabledProperty}
         AttachedProperty={Binding RelativeSource={RelativeSource Self}, Path=IsEnabled, Mode=OneWay}"/>

有一个控件。EnabledChanged事件

实际上,它被命名为IsEnabledChanged。