WPF Проблема обработки текста справа налево с символом процента - PullRequest
6 голосов
/ 09 марта 2020

Я думаю, что есть проблема с WPF и вводом справа налево, когда дело доходит до обработки знака процента (может также относиться к аналогичным знакам).

Когда TextBox ориентирован справа налево и в начале текста нет ивритских символов, знак процента отображается не с той стороны числа.

В этом видео вы можете увидеть ненормальное поведение:

Demonstration Screen Capture

Вот мое приложение XAML (как видите, в нем ничего нет):

<Window x:Class="HebrewTextTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow">
    <Grid FlowDirection="RightToLeft" Margin="10">
        <TextBox Text=" 25% הנחה"/>
    </Grid>
</Window>

Есть идеи, есть ли решение для этого?

Обратите внимание, что у меня нет никакого контроля над текстом, так как пользователь вводит его в ...

1 Ответ

1 голос
/ 09 марта 2020

При изменении текста в текстовом поле добавьте метку справа налево к тексту:

<TextBox Name="textBox1" Text=" 25% הנחה" TextChanged="Textbox1_TextChanged"/>

bool addRtlMark = false;
private void Textbox1_TextChanged(object sender, TextChangedEventArgs e)
{
 if (!addRtlMark)
  {
    addRtlMark = true;
    textBox1.Text = "\u200f" + textBox1.Text.Replace("\u200f", "");
    addRtlMark  = false;
  }
}
...