Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
こんにちは、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 を使用する各製品の問題によって発生します。
回避策
現時点でこの問題が修正される予定はありません。
プロパティ設定などによって回避する方法もないため、利用される文字列で問題が発生しないかを事前にご確認ください。
表示結果に問題がある場合は、括弧の利用を控えるなど表現の変更をご検討ください。
