public string OpenWindow(string pageKey, Point position, object parameter = null)
        {
            Type page;

            lock (_pages)
            {
                if (!_pages.TryGetValue(pageKey, out page))
                {
                    throw new ArgumentException(
                              string.Format("Page not found: {0}. Did you forget to call SubWindowsService.Configure?",
                                            pageKey),
                              nameof(pageKey));
                }
            }

            var subWindow = new SubWindow
            {
                X = position.X,
                Y = position.Y
            };

            _subWindowsPanel.Children.Add(subWindow);
            subWindow.Show();
            subWindow.Loaded += (sender, e) => { subWindow.Navigate(page, parameter); };
            subWindow.Closed += SubWindow_Closed;
            _subWindows.Add(subWindow.Id, subWindow);
            return(subWindow.Id);
        }