/// <summary> /// Saves and restores window position /// Note: There must be at least one other setting in Properties.Settings. To allow the window to be saves. /// </summary> public static void ActivateWindow(Window window, string name, WindowMemoryType memoryType = WindowMemoryType.All, bool attachEvents = true) { var win = new TrackingWindow() { Window = window, Name = name }; if (Windows.ContainsKey(name)) { throw new WindowMemoryException($"Window already activated: {name}"); } Windows.Add(name, win); if (IoC.Settings.Windows.TryGetValue(win.Name, out Rectangle rect)) { if (memoryType.HasFlag(WindowMemoryType.Size)) { window.Width = rect.Width; window.Height = rect.Height; } if (memoryType.HasFlag(WindowMemoryType.Position)) { var area = new Rectangle(rect.Left, rect.Top, (int)window.Width, (int)window.Height); if (Screen.AllScreens.Any(s => s.WorkingArea.IntersectsWith(area))) { window.WindowStartupLocation = WindowStartupLocation.Manual; window.Top = rect.Top; window.Left = rect.Left; } } } if (attachEvents) { win.AttachEvents(); } }
private void HandleTrackingWindow() { List <Tracking> trackings = GetActiveTrackings(); if (trackings.Count() == 0) { if (_trackingWindow != null) { WindowManager.Close(_trackingWindow); _trackingWindow = null; } } else { if (_trackingWindow == null) { _trackingWindow = new TrackingWindow(this); WindowManager.Open(_trackingWindow); } _trackingWindow.ActiveTrackings = trackings; } }