public void Detach() { if (_disposables != null) { var layer = ChromeOverlayLayer.GetOverlayLayer(_hostWindow); layer?.Children.Remove(this); _disposables.Dispose(); _disposables = null; } }
public void Attach() { if (_disposables == null) { var layer = ChromeOverlayLayer.GetOverlayLayer(_hostWindow); layer?.Children.Add(this); if (_hostWindow != null) { _disposables = new CompositeDisposable { _hostWindow.GetObservable(Window.WindowDecorationMarginProperty) .Subscribe(x => UpdateSize()), _hostWindow.GetObservable(Window.ExtendClientAreaTitleBarHeightHintProperty) .Subscribe(x => UpdateSize()), _hostWindow.GetObservable(Window.OffScreenMarginProperty) .Subscribe(x => UpdateSize()), _hostWindow.GetObservable(Window.WindowStateProperty) .Subscribe(x => { PseudoClasses.Set(":minimized", x == WindowState.Minimized); PseudoClasses.Set(":normal", x == WindowState.Normal); PseudoClasses.Set(":maximized", x == WindowState.Maximized); PseudoClasses.Set(":fullscreen", x == WindowState.FullScreen); }) }; _captionButtons?.Attach(_hostWindow); } UpdateSize(); } }