protected override void OnStartup(object sender, StartupEventArgs e) { var settingsBuilder = new WindowSettingsBuilder() .AsTopmost() .SizeToContent(); // Can't use SystemParameters.WorkArea as that defines only the primary monitor, virtual screen defines the multi-monitor work area var virtualTopLeft = new Point(SystemParameters.VirtualScreenLeft, SystemParameters.VirtualScreenTop); var virtualSize = new Size(SystemParameters.VirtualScreenWidth, SystemParameters.VirtualScreenHeight); var virtualRect = new Rect(virtualTopLeft, virtualSize); // Guard against the existing window position being outside the screen, if it is just center the app to teh screen if ((Settings.Default.Top == 0 && Settings.Default.Left == 0) || !virtualRect.Contains(new Point(Settings.Default.Left, Settings.Default.Top))) { settingsBuilder.WithStartupLocation(WindowStartupLocation.CenterScreen); } else { settingsBuilder.WithTopLeft(Settings.Default.Top, Settings.Default.Left); } var settings = settingsBuilder.Create(); DisplayRootViewFor<ShellViewModel>(settings); }