Пример #1
0
        public void Detach()
        {
            if (_disposables != null)
            {
                var layer = ChromeOverlayLayer.GetOverlayLayer(_hostWindow);

                layer?.Children.Remove(this);

                _disposables.Dispose();
                _disposables = null;
            }
        }
Пример #2
0
        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();
            }
        }