- // BaseHandle CPtr is used in Registry and there is danger of deletion if we keep using it here.
- // Restore current CPtr.
- swigCPtr = currentCPtr;
+ if (_visibilityChangedEventCallback != null)
+ {
+ ViewVisibilityChangedSignal signal = new ViewVisibilityChangedSignal(Interop.NDalic.VisibilityChangedSignal(GetBaseHandleCPtrHandleRef), false);
+ signal?.Disconnect(_visibilityChangedEventCallback);
+ signal?.Dispose();
+ _visibilityChangedEventCallback = null;
+ }
+
+ if (_layoutDirectionChangedEventCallback != null)
+ {
+ ViewLayoutDirectionChangedSignal signal = new ViewLayoutDirectionChangedSignal(Interop.Layout.LayoutDirectionChangedSignal(GetBaseHandleCPtrHandleRef), false);
+ signal?.Disconnect(_layoutDirectionChangedEventCallback);
+ signal?.Dispose();
+ _layoutDirectionChangedEventCallback = null;
+ }