2


1

WPF WrapPanelを使用してテキストをラップして右揃えにする-WPFバグ?

WrapPanelと2つのTextBlockを使用して、テキストの左側にアスタリスク(*)を追加し、テキストを折り返して、テキストを強制的に右揃えにしようとしています。 FlowDirectionをRightToLeftに設定してWrapPanelを作成し、テキストを追加してからアスタリスクを追加することで、正常に完了しました。 ただし、使用するテキストの行末に英数字以外の文字が含まれている場合、行の先頭に不可解に強制されます。 この振る舞いは非常に奇妙だと思います。 これはWPFのバグであり、意図した動作ではないはずだと思います。

テキスト=通常のテキスト(その他のテキスト)の例:

Expected:
* Normal Text (Other
               Text)
Actual:
* Normal Text (Other
               (Text

次のサンプルコードを使用して問題を再現してください。 これを高さと幅= 100のウィンドウに配置し、TextBoxに「通常のテキスト(その他のテキスト)」と入力します。 または、HeightとWidthを好きなものに設定し、テキストをラップするように強制するのに十分なテキストを記述してから、句読点を最後に追加します。

サンプルコード


それで、私の質問。

  • これはバグですか、これは意図したものですか?

  • これがバグである場合、何らかの方法でマイクロソフトに提出する必要がありますか? How?

この投稿を開始してから、代わりに2列のグリッドに2つのTextBlockを配置することにしました。 Right TextAlignmentを使用するように構成されたTextBlockを含む非アスタリスクでは、とにかくすべての要件を満たしています。 それでも、これは興味深い問題であることがわかりました。

2 Answer


4


代わりにこれを試してください:


FlowDirectionは、右から左に読む言語をサポートするために使用します。 私はそのような言語の規則を知らないので、あなたがあなたが何であるのか、それがバグなのかを理解するふりをするつもりはありません。 とはいえ、FlowDirectionを変更することは、右から左への言語の右揃えを処理する正しい方法ではないことを知っているので、代わりにHorizo​​ntalAlignmentを使用する必要があります。

(今後の参照用に、http://connect.microsoft.com/ [接続サイト]からMicrosoftにバグを送信します)


3


Net 4(WPF4)では実行がバインド可能であるため、次のように試すことができます。

タグの境界の間に空白があると、2つの実行の間にスペースが表示されるため、2つのRun要素は同じ行にあります。 (HTMLと同じように。)