此外,如果我将 TextBox 的 FlowDirection 设置为 RightToLeft,则 WPF 文本框可以正常工作。但这会使我的字符串向右移动,并且应用程序将出现对齐问题。
这有点说你遇到了比基本对齐更大的问题。重点FlowDirection
是允许那些非本地LeftToRight
读者在您的应用程序中拥有本地用户体验。
向右移动的字符串应该是这样,这也是您的阿拉伯语用户所期望的。
zh-CN 中的 Microsoft 主页
ar-iq 中的同一页面
不仅字符看起来不同,而且实际的文本流也不同,这是有原因的(这是该语言的用户所期望的)
如果您确定即使在FlowDirection
反转时也要保持内容左对齐,Style.Trigger
请相应地应用 a 来执行此操作,但请查看您的用户体验感觉。
<TextBox>
<TextBox.Style>
<Style TargetType="{x:Type TextBox}">
<Setter Property="HorizontalContentAlignment"
Value="Left" />
<Style.Triggers>
<Trigger Property="FlowDirection"
Value="RightToLeft">
<!-- "Right" - HorizontalContentAlignment with FlowDirection="RightToLeft" is
the same end render visually as "Left" - HorizontalContentAlignment with
FlowDirection="LeftToRight" -->
<Setter Property="HorizontalContentAlignment"
Value="Right" />
</Trigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
更新:
正如 OP 现在所说的那样,控件实际上是TextBlock
上面的Style
样子:
<TextBlock>
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="TextAlignment"
Value="Left" />
<Style.Triggers>
<Trigger Property="FlowDirection"
Value="RightToLeft">
<Setter Property="TextAlignment"
Value="Right" />
</Trigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>