Проблема в том, что вы вносите поправки в текст вашего элемента управления внутри события TextChange, которое затем изменяет текст и снова запускает событие.
Таким образом, вы попадаете в бесконечное l oop и в конечном итоге генерируется исключение stackoverflow.
Таким образом, вам нужно указать способ запуска кода в вашем методе только один раз. Простой способ - использовать логическое значение, чтобы указать, обрабатываете ли вы его или нет. Как это
//Defined in your class
private bool skipTextChange = false;
//Amend the TextChange event
if (skipTextChange )
skipTextChange = false;
else
{
skipTextChange = true;
PercentageText.Text = PercentageText.Text.Trim() + "%";
}