WPF控件中的取消订阅事件

| 我有一个自定义控件,一个范围滑块,在我的一个视图中使用了它。 构造函数如下所示:
        EventHandler ReCalculateWidthsHandler;
        public RangeSlider()
        {
            ReCalculateWidthsHandler = OnReCalculateWidths;
            DependencyPropertyDescriptor.FromProperty(ActualWidthProperty, typeof(RangeSlider)).
                AddValueChanged(this, ReCalculateWidthsHandler);
        }
我不知道何时/如何取消对该事件处理程序的限制。 Control中没有Dispose方法。有什么办法可以通知我控件已被释放/删除,以便我可以取消订阅任何已订阅的事件? 这可能是一个更笼统的问题:给定扩展了Control的自定义控件,您如何知道它何时被处置? 谢谢。     
已邀请:
通常,您应该使用OverrideMetadata为依赖项属性添加更改处理程序。不幸的是,它不适用于只读属性。这就是为什么我使用属性描述符的原因。您知道这种方法太复杂了,因为AddValueChanged存储静态强引用,这会导致内存泄漏。我认为您应该从SizeChanged事件调用ReCalculateWidthsHandler而不是订阅属性描述符。     

要回复问题请先登录注册