【发布时间】:2015-02-14 21:10:41
【问题描述】:
我有一个 WPF 应用程序。
我想显示涉及数字和单词的希伯来语句子。
我阅读了有关 Unicode 的 bidi 并为此编写了一些代码,如下所示:
const string PDF = "\u202C";
const string LRO = "\u202D";
const string RLO = "\u202E";
const string TEXT = "ערך ראשון : ערך שני";
var parts = TEXT.Split(':');
double number = -50;
double number2 = -200;
string str = string.Empty;
str +=RLO + parts[0] + PDF;
str +=LRO + number + PDF;
str +=RLO + parts[1] + PDF;
str +=LRO + shortValue + PDF;
Text = str;
现在在 xaml 中:
<TextBlock Text="FlowDirection=LeftToRight TextAlignment=Right Language=he-IL" Grid.Column="0" Grid.Row="0" />
<TextBlock Text="{Binding Text}" FlowDirection="LeftToRight" Language="he-IL" TextAlignment="Right" Grid.Column="1" Grid.Row="0"/>
<TextBlock Text="FlowDirection=LeftToRight TextAlignment=Left Language=he-IL" Grid.Column="0" Grid.Row="1"/>
<TextBlock Text="{Binding Text}" FlowDirection="LeftToRight" Language="he-IL" TextAlignment="Left" Grid.Column="1" Grid.Row="1"/>
<TextBlock Text="FlowDirection=RightToLeft TextAlignment=Left Language=he-IL" Grid.Column="0" Grid.Row="2"/>
<TextBlock Text="{Binding Text}" FlowDirection="RightToLeft" Language="he-IL" TextAlignment="Left" Grid.Column="1" Grid.Row="2"/>
<TextBlock Text="FlowDirection=RightToLeft TextAlignment=Right Language=he-IL" Grid.Column="0" Grid.Row="3"/>
<TextBlock Text="{Binding Text}" FlowDirection="RightToLeft" Language="he-IL" TextAlignment="Right" Grid.Column="1" Grid.Row="3"/>
但 WPF 似乎不支持它 - 我们可以在这里看到:
负数设计不正确..
编辑:
非常感谢 Hans Passant 的链接。
我将 LRO 和 RLO 的值更改为:
const string LRO = "\u200E";
const string RLO = "\u200F";
现在它设计得很好。
谢谢!
【问题讨论】:
-
预期的结果如何?
-
预期的结果是减号应该在数字的左侧,而不是设计在右侧。
-
@HansPassant,谢谢,您的链接对我有帮助:)