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);
        }
        public void ShowExpCardCalculator(ContentControl sender)
        {
            if (ExpCardCalculatorViewModel.IsActive) return;

            var senderPosition = sender.PointToScreen(new Point()); // allows us to position the new window below the button we just clicked
            var settings = new WindowSettingsBuilder()
                .SizeToContent()
                .WithTopLeft(senderPosition.Y + sender.ActualHeight, senderPosition.X)
                .HideMaximizeButton()
                .HideMinimizeButton()
                .HideIcon()
                .Create();
            windowManager.ShowWindow(ExpCardCalculatorViewModel, null, settings);
        }