fub*_*aar 6 wpf xaml isenabled
我想在WPF元素上监听对IsEnabled属性的更改(这样我可以在每次更改时运行一些公共代码),而不必在每个窗口/页面中加载大量代码.
我还想避免因强大的事件监听器而导致内存泄漏的任何潜在问题.我遇到过一些建议使用弱事件监听器等的文章,但对于看起来应该非常简单的事情来说,这看起来非常复杂.
我不想为了做到这一点而需要子类控件,因为有几种控件类型(以及将来可能更多)我想要监听IsEnabled的更改.
有没有人想出一个更简洁的处理方式?
一个解决此问题的好方法是创建一个自定义附加属性,并设置一个以IsEnabled属性为源的单向绑定:
<Control IsEnabled={Binding IsEnabledProperty}
AttachedProperty={Binding RelativeSource={RelativeSource Self}, Path=IsEnabled, Mode=OneWay}"/>
Run Code Online (Sandbox Code Playgroud)
这使您可以处理附加属性的更改处理程序中的常用功能(这可能涉及触发自定义路由事件,因为IsEnabled是常规CLR事件,不会冒泡)。
| 归档时间: |
|
| 查看次数: |
2251 次 |
| 最近记录: |