FlowDirection プロパティを RightToLeft に設定した場合の問題について
こんにちは、Platform SDK (Windows SDK) サポートチームです。
今回は、XAML を使用するアプリケーションにおいて、FlowDirection プロパティを RightToLeft に設定した場合の問題についてご案内します。
現象
Store アプリ、UWP アプリ、WPF アプリ で FlowDirection プロパティを RightToLeft に設定して文字列を表示すると、Windows Forms アプリ と異なる表示結果になる場合があります。
例えば、以下のような XAML を Store アプリ、UWP アプリ、WPF アプリ で実装することを想定します。
<TextBlock Text="String(100)" FlowDirection="RightToLeft" />
<TextBlock Text="String(100)..." FlowDirection="RightToLeft"/>
<TextBlock Text="Windows 10Professional" FlowDirection="RightToLeft" Language="en-US"/>
<TextBlock Text="Windows 10Professional" FlowDirection="RightToLeft" Language="ar-SA"/>
以下は、実行時のスクリーンショットですが、上から、Store アプリ、UWP アプリ、WPF アプリ、Windows Forms アプリのウインドウになります。
(Windows Forms アプリは XAML を使用できないため、Label コントロールで RightToLeft プロパティを Yes に設定した場合の結果を表示しています。 また Language プロパティがないためコントロールの数が異なっています)
この結果を確認いただくと、WPF アプリでは “)” が “(” に変換されて “String” の前に移動し、UWP アプリでは “...” が先頭に表示されない結果となっています。
なお、WPF アプリは、最後の TextBlock が "10Professional Windows" と表示されていますが、以下のように ”10” と “Professional” の間にスペースを挿入すると ”Windows 10 Professional” と表示され、問題が発生しません。
<TextBlock Text="Windows 10 Professional" FlowDirection="RightToLeft" Language="ar-SA"/>
原因
この動作は、XAML を使用する各製品の問題によって発生します。
回避策
現時点でこの問題が修正される予定はありません。
プロパティ設定などによって回避する方法もないため、利用される文字列で問題が発生しないかを事前にご確認ください。
表示結果に問題がある場合は、括弧の利用を控えるなど表現の変更をご検討ください。