C# 为什么感叹号出现在文本前面

C# 为什么感叹号出现在文本前面,c#,.net,wpf,C#,.net,Wpf,我只是在TextBlock中填充了一些已经存在的文本!(感叹号)在结尾。还有!显示在文本前面 所以不是 一些文字 我明白了 !!一些 正文 怎么可能呢 有线索吗 谢谢大家! 代码 最有可能的是,TextBlock的祖先将其FlowDirection设置为rightoleft。尝试将其重置为LeftToRight: tb.FlowDirection = FlowDirection.LeftToRight; 编辑:原因解释起来有点复杂;这与渲染方式有关。来自维基百科: 标点符号[…]可以出现在L

我只是在
TextBlock
中填充了一些已经存在的文本!(感叹号)在结尾。还有!显示在文本前面

所以不是

一些文字

我明白了

!!一些 正文

怎么可能呢

有线索吗

谢谢大家!


代码


最有可能的是,
TextBlock
的祖先将其
FlowDirection
设置为
rightoleft
。尝试将其重置为
LeftToRight

tb.FlowDirection = FlowDirection.LeftToRight;
编辑:原因解释起来有点复杂;这与渲染方式有关。来自维基百科:

标点符号[…]可以出现在LTR和RTL脚本中。它们被称为“弱”字符,因为它们不包含任何方向信息。因此,由软件决定这些“弱”字符的放置方向


WPF正在处理您的
与文本的其余部分分开,并将其放置在与您的方向一致的位置(在本例中,是向右向左)。

这与应用程序的区域性设置有关吗?您将不得不发布更多代码,以允许我们重现问题。您能展示文本是如何填充的吗?Is
本身在文本块中,或者是
在字符串
文本中
?@mattytommo是的,我使用了很多区域性。。我现在会检查的…@Peretz:因为你有奇怪的本地化设置:P@KendallFrey呵呵呵呵是的。。。西班牙语…:)@佩雷茨:哎呀,西班牙语是从左到右的(就像所有其他欧洲语言一样)。如果你的应用默认为从右到左的西班牙语,你可能配置不正确。可能是因为TextBlock的所有者StackPanel。事实上,它是一个选框控件。
tb.FlowDirection = FlowDirection.LeftToRight;