gpt4 book ai didi

wpf - 监听 Wpf 元素上 IsEnabled 的更改

转载 作者:行者123 更新时间:2023-12-04 14:05:10 26 4
gpt4 key购买 nike

我想监听 WPF 元素上 IsEnabled 属性的更改(以便我可以在它更改时运行一些通用代码),而不必在每个窗口/页面中放置大量代码。

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

我不想为了做到这一点而对控件进行子类化,因为我想监听 IsEnabled 更改的几种控件类型(将来可能还会更多)。

有没有人想出一个更整洁的方法来处理这个?

最佳答案

这个问题的一个巧妙的解决方案是创建一个自定义附加属性并设置一个以 IsEnabled 属性作为源的单向绑定(bind):

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

这允许您处理附加属性的更改处理程序中的常见功能(这可能涉及触发自定义路由事件,因为 IsEnabled 是常规 CLR 事件并且不会冒泡)。

关于wpf - 监听 Wpf 元素上 IsEnabled 的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6940634/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com