public T Open <T>() where T : class, IWindowController { var window = _factory.Create <T>(); if (window == null) { return(null); } window.Owner.SetParent(_root.Root, false); //TODO: add modal, single types if (window.Mode == WindowMode.Single) { _windows.Add(window); window.Open(); } else if (window.Mode == WindowMode.Modal) { _modalWindow?.Close(); _modalWindow = window; window.Open(); } WindowOpen?.Invoke(window); return(window); }