我想要監聽WPF元素上的IsEnabled屬性的更改(以便我可以在更改時運行一些通用代碼),而無需在每個窗口中放入大量代碼/頁。在Wpf元素上監聽對IsEnabled的更改
我也想避免由於強大的事件監聽器而導致的任何內存泄漏問題。我遇到過一些文章,建議使用弱事件監聽器等,但對於看起來應該很容易的事情來說,這似乎非常複雜。
我不想爲了做到這一點而需要子類化控件,因爲有幾種控制類型(可能更多將來),我想要監聽IsEnabled更改。
有沒有人想出一個更好的方式來處理這個問題?
我想要監聽WPF元素上的IsEnabled屬性的更改(以便我可以在更改時運行一些通用代碼),而無需在每個窗口中放入大量代碼/頁。在Wpf元素上監聽對IsEnabled的更改
我也想避免由於強大的事件監聽器而導致的任何內存泄漏問題。我遇到過一些文章,建議使用弱事件監聽器等,但對於看起來應該很容易的事情來說,這似乎非常複雜。
我不想爲了做到這一點而需要子類化控件,因爲有幾種控制類型(可能更多將來),我想要監聽IsEnabled更改。
有沒有人想出一個更好的方式來處理這個問題?
很好地解決了這個問題將創建一個自定義的附加屬性和設置單向與IsEnabled屬性爲源綁定:
<Control IsEnabled={Binding IsEnabledProperty}
AttachedProperty={Binding RelativeSource={RelativeSource Self}, Path=IsEnabled, Mode=OneWay}"/>
這允許你來處理附加屬性的通用的功能更改處理程序(可能涉及發射自定義路由事件,因爲IsEnabled是常規CLR事件並且不會冒泡)。
有一個Control.EnabledChanged事件
實際上,它被命名爲IsEnabledChanged。 –