Проблема в том, что, хотя ваш код «выглядит» правильно в XAML, первым символом является «(», что не соответствует вашим намерениям. Вы намерены, чтобы это был последний символ строки справа налево, которыйозначает, что это действительно должен быть символ ')' (но на языках справа налево он должен быть зеркальным).
Если вы хотите, чтобы ваш XAML выглядел правильно, а WPF отображал его правильно, вам нужно исправить свою скобку испециальный символ Unicode & ux200F;маркерный символ, чтобы XAML понимал, что последний символ ')' по-прежнему справа налево.
С Википедия
В алгоритме каждая последовательностьсцепленных сильных символов называется «бегом».Слабый персонаж, расположенный между двумя сильными персонажами с одинаковой ориентацией, унаследует их ориентацию.Слабый символ, расположенный между двумя сильными символами с различным направлением письма, унаследует направление письма основного контекста (в документе LTR символ станет LTR, в документе RTL он станет RTL).Если за «слабым» символом следует другой «слабый» символ, алгоритм будет искать первый соседний «сильный» символ.Иногда это приводит к непреднамеренным ошибкам отображения.Эти ошибки исправляются или предотвращаются с помощью «псевдо-сильных» символов.Такие управляющие символы Unicode называются метками.Метка (U + 200E слева направо (HTML: LRM) или U + 200F справа налево (HTML: RLM)) должна быть вставлена в место, чтобы сделатьвложенный слабый символ наследует направление письма.
Попробуйте
<Grid x:Name="LayoutRoot" HorizontalAlignment="Left" VerticalAlignment="Top" >
<TextBlock Margin="104,96,0,0" VerticalAlignment="Top" Height="Auto" Text="وقت القاعدة الرئيسية 1 (بتوقيت 12 ساعة)" HorizontalAlignment="Left" FontSize="20" />
</Grid>
Обратите внимание, что хотя это выглядит одинаково, на самом деле скрытый символ и конечные скобки различны.