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); }