WPF: как FlowDirection.RightToLeft меняет строку? - PullRequest
8 голосов
/ 13 августа 2011

У меня есть элемент FormattedText.У меня есть flowdirection, установленный на 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 sectionNum = new FormattedText(
   sectNum,
   CultureInfo.CurrentCulture,
   FlowDirection.RightToLeft,
   new Typeface("Verdana"),
   14,
   Brushes.Black);
context.DrawText(sectionNum, new Point(790 - 96, 20));

Кто-нибудь знает, что происходит?Мне нужно иметь возможность отображать каждую строку так, чтобы она читалась так же, как LeftToRight, когда установлено значение RightToLeft.

Спасибо!

1 Ответ

1 голос
/ 13 августа 2011

TextInfo имеет собственное FlowDirection и переопределяет WPF FlowDirection.

Так что, если вы наберете арабский или иврит, он автоматически будет использовать направление «справа налево».Но есть проблема, если вы используете знаки «;», «» (пробел).Компилятор считает, что он может быть в обоих направлениях и может быть обозначен как «Слева направо» на арабском языке, поэтому здесь вы должны использовать пользовательский Wpf FlowDirection.

В ваших примерах компилятор знает английские буквы и использует «Слева кправильное направление, но сходит с ума с пробелами и числами.

Здесь аналогичный вопрос со ссылкой на хорошую часть в книге.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...