Посмотрите на это:
http://www.wpftutorial.net/GridLayout.html
"Звезда (*):
Занимает столько места, сколько доступно (после заполнения всех столбцов авто и фиксированного размера), пропорционально разделенных по всем столбцам звездного размера. Таким образом, 3 * / 5 * означает то же самое, что и 30 * / 50 *. Помните, что определение размера звездочек не работает, если размер сетки рассчитывается на основе ее содержимого."
Как в вашем коде. Я подозреваю, что это также является причиной того, что для других, кто тестировал его, все выглядело нормально, если они вставили сетку в окно, размер которого превышает 300 пикселей, установленных вашим TextBlock. Я получаю ту же проблему, что и вы, если я использую точно такой же XAML.
Редактировать: Так вот для "почему". См. Этот вопрос для возможного альтернативного решения: Wpf: Сетка: Как я могу поделиться шириной столбца / высоты строки?
Самый последний ответ (не тот, который выбрал Аскер) кажется наиболее полезным в этом случае.