8

我有一个 FormattedText 项目。我将流向设置为 RightToLeft,但我不确定它是如何工作的。它改变我的弦真的很不一致。

我想象它只需要一个字符串,并向后显示它(通过字符或单词),但在测试中它会做一些奇怪的事情。

====================================================

例子,

the string "90%", is displayed as "%90"

为什么 % 符号从结尾走到开头?

the string "12 34 56 this is my (string)" 
is displayed as "(this is my (string 56 34 12"

为什么数字到末尾,一个括号到开头并切换方向?

the string "this is a string"
is displayed as "this is a string"

为什么在这种情况下什么都没有发生?

====================================================

我的 formattedText 如下所示:

FormattedText sectionNum = new FormattedText(
   sectNum,
   CultureInfo.CurrentCulture,
   FlowDirection.RightToLeft,
   new Typeface("Verdana"),
   14,
   Brushes.Black);
context.DrawText(sectionNum, new Point(790 - 96, 20));

有谁知道发生了什么?当设置为 RightToLeft 时,我需要能够显示每个字符串,以便它读取与 LeftToRight 相同。

谢谢!

4

1 回答 1

1

TextInfo 有自己的 FlowDirection,它会覆盖 WPF FlowDirection。

因此,如果您输入阿拉伯语或希伯来语,它将自动使用“从右到左”的方向。但是如果你使用符号“;”,“”(空格),就会出现问题。Compilor 认为它可以是双向的,并且可以在阿拉伯语中表示为“从左到右”,所以在这里你应该使用自定义 Wpf FlowDirection。

在您的示例中,编译器知道英文字母并使用“从左到右”的方向,但对空格和数字感到疯狂。

是类似的问题,带有指向本书中好部分的链接。

于 2011-08-12T22:34:55.637 回答