アラビア語を含む多くの言語をサポートするアプリケーションに取り組んでいます。値を入力しているときに WPF テキスト ボックスで奇妙な動作が見られますが、不思議なことに、Windows フォームのテキスト ボックスでも同じことが正常に機能しています。
私がしているのはこれだけです
- テキスト ボックスを作成し、そのフロー方向をデフォルト値の LeftToRight のままにします。
- アプリの言語をアラビア語に変更します。
テキスト ボックスに次の文字を 1 つずつ入力します 1 a 2 j
(ここで、a と j は任意の 2 つのアラビア文字を表します)。
結果: Wpf テキスト ボックスには値が 1j2a として表示されますが、Win フォーム テキスト ボックスには値が j2a1 として表示されます。
アラビア語は右から左なので、Win 形式で表示される値は正しいのですが、WPF で表示される値は間違っています。
最初の文字をアラビア語として入力し、次にアラビア語以外の文字を入力すると、Wpf は正しい値を表示します。
また、TextBox の FlowDirection を RightToLeft に設定すると、WPF テキストボックスは正常に動作します。しかし、それにより文字列が右に移動し、アプリに配置の問題が発生します。
Windowsフォームが正常に動作しているのに、WPFテキストボックスに間違った値が表示される理由について誰か考えていますか?
また、フロー方向を RightToLeft に設定した場合、テキストを左に揃えることはできますか?