WPF:FlowDirection.RightToLeft如何改变字符串?

8

我有一个FormattedText项。我将flowdirection设置为从右到左,并不确定它是如何工作的。它会不一致地更改我的字符串。

我想象它只是拿一个字符串,并将其倒过来显示(按字符或按单词),但在测试中它做了奇怪的事情。

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

例子:

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));

有人知道发生了什么吗?我需要能够显示每个字符串,使其在设置为从右到左时与从左到右的阅读方式相同。
谢谢!
1个回答

1

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

因此,如果您输入阿拉伯语或希伯来语,它将自动使用“从右到左”的方向。但是,如果您使用符号“;”,“”(空格),则存在问题。编译器认为它可以在两个方向上放置,并且可以在阿拉伯语中放置为“从左到右”,因此在这里应该使用自定义的Wpf FlowDirection。

在您的示例中,编译器知道英文字母并使用“从左到右”的方向,但对于空格和数字则变得混乱。

这里是类似的问题,其中包含书中好的部分链接。


我终于抽出时间阅读了这篇文章。它实际上并没有说如何解决我的问题...难道真的没有真正的解决方案吗? - Toadums
我不明白你想要什么。 如果你想要反转字符串,最好手动操作,使用静态函数,就像这里的例子:http://www.csharp411.com/c-string-tips/ - Artur A

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接