2011-08-12 13 views
7

Mam element FormattedText. Mam ustawienie przepływu ustawione na RightToLeft i nie jestem pewien, jak to działa. Zmienia moje struny naprawdę niekonsekwentnie.WPF: w jaki sposób FlowDirection.RightToLeft zmienić ciąg znaków?

wyobrażałem sobie, że to po prostu wziąć ciąg, i wyświetlić go do tyłu (albo znaków lub słów), ale w testowaniu robi wierd rzeczy.

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

przykłady,

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

Dlaczego% znak przejść od końca do początku?

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

dlaczego liczby idą do końca, a jeden nawias idzie na początek i zmienia kierunek?

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

dlaczego nic się nie dzieje w tym przypadku?

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

mój formattedText wygląda następująco:

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

ktoś wie co się dzieje? Muszę być w stanie wyświetlić każdy ciąg tak, aby brzmiał tak samo jak LeftToRight, po ustawieniu na RightToLeft.

Dzięki!

Odpowiedz

2

TextInfo ma własny FlowDirection i nadpisuje WPF FlowDirection.

Więc jeśli wpiszesz arabski lub hebrajski będzie automatycznie używać „od prawej do lewej” kierunek. Ale jest problem, jeśli używasz znaków ";", "" (spacja). Compilor myśli, że może być w obu kierunkach i może umieścić go jako "od lewej do prawej" w języku arabskim, więc tutaj powinieneś użyć niestandardowego Wpf FlowDirection.

W twoich przykładów compilor wie o angielskich liter i użyć „od lewej do prawej” kierunku, ale szaleje ze spacjami i cyfr.

Here jest podobne pytanie z linkiem do dobrej strony w książce.

+0

W końcu udało mi się przeczytać artykuł. tak naprawdę nie mówi, jak rozwiązać mój problem ... czy nie ma prawdziwego rozwiązania? – Toadums

+0

Nie rozumiem, czego chcesz. Jeśli chcesz odwrócić ciąg, powinieneś zrobić to ręcznie, lepiej wykorzystując funkcję statyczną, taką jak tutaj: http://www.csharp411.com/c-string-tips/ – Artru

Powiązane problemy