public MainWindow()
        {
            InitializeComponent();
            ExpressionBox.Focus();

            CloseWindowWhileRunningTestsInDebugMode();
        }
        private void SolveExpression(object sender, RoutedEventArgs e)
        {
            string expression = ExpressionBox.Text.TrimEnd();

            if (!string.IsNullOrEmpty(expression))
            {
                StringBuilder result = new StringBuilder();

                try
                {
                    result.Append(RomanExpressionSolver.Solve(expression));
                    ResultLabelText.FontSize   = 70;
                    ResultLabelText.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#8873CB"));
                    ResultLabelText.Foreground = (SolidColorBrush)(new BrushConverter().ConvertFrom("#250D71"));
                }
                catch (Exception ex)
                {
                    result.Append(expression + " : " + ex.Message);
                    ResultLabelText.FontSize   = 16;
                    ResultLabelText.Background = new SolidColorBrush(Colors.Red);
                    ResultLabelText.Foreground = new SolidColorBrush(Colors.White);
                }

                ExpressionBox.Text      = "";
                ResultLabelText.Text    = result.ToString();
                LastExpressionText.Text = $"Last expression: {expression}";
                ExpressionBox.Focus();
            }
        }
        private void PutContent(object sender, RoutedEventArgs e)
        {
            Button btn     = (Button)sender;
            string content = btn.Content.ToString();

            if (ExpressionBox.SelectedText.Length > 0)
            {
                ExpressionBox.SelectedText = content;

                Regex trimmer = new Regex(@"\s\s+");
                ExpressionBox.Text = trimmer.Replace(ExpressionBox.Text, " ");

                ExpressionBox.Select(0, 0);
                int caretLength = ExpressionBox.Text.Length;
                ExpressionBox.CaretIndex = caretLength;
            }
            else
            {
                string[] operators = { "+", "-", "*", "/", "%", "^", "√" };
                if (operators.Contains(content))
                {
                    ExpressionBox.Text = ExpressionBox.Text.Insert(ExpressionBox.CaretIndex, $" {content} ");
                    int caretLength = ExpressionBox.Text.Length;
                    ExpressionBox.CaretIndex = caretLength + 3;
                }
                else
                {
                    ExpressionBox.Text = ExpressionBox.Text.Insert(ExpressionBox.CaretIndex, content);
                    int caretLength = ExpressionBox.Text.Length;
                    ExpressionBox.CaretIndex = caretLength + 1;
                }

                Regex trimmer = new Regex(@"\s\s+");
                ExpressionBox.Text = trimmer.Replace(ExpressionBox.Text, " ");
            }

            ExpressionBox.Focus();
        }
 private void SetFocus()
 {
     ExpressionBox.Focus();
     ExpressionBox.Select(ExpressionBox.Text.Length, 0);
     ExpressionBox.ScrollToEnd();
 }