【问题标题】:WPF is not support bid unicode?WPF不支持出价unicode?
【发布时间】: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,谢谢,您的链接对我有帮助:)

标签: wpf unicode bidi


【解决方案1】:

您必须使用正确的文化打印数字。现在你告诉程序如何写字符串,它会按照你的指示去做。

如果你需要一些特殊的数字格式,你必须使用Culture

见:http://msdn.microsoft.com/en-us/library/shxtf045%28v=vs.110%29.aspx

double value = -16325.62015;
// Display value using the invariant culture.
Console.WriteLine(value.ToString(CultureInfo.InvariantCulture));
// Display value using the en-GB culture.
Console.WriteLine(value.ToString(CultureInfo.CreateSpecificCulture("en-GB")));
// Display value using the de-DE culture.
Console.WriteLine(value.ToString(CultureInfo.CreateSpecificCulture("de-DE")));

【讨论】:

  • 这是 wpf - 这个解决方案对我没有帮助。谢谢
猜你喜欢
  • 2013-05-14
  • 2011-04-15
  • 2017-12-11
  • 2011-11-29
  • 2021-04-08
  • 1970-01-01
  • 2012-10-17
  • 2012-09-12
  • 1970-01-01
相关资源
最近更新 更多