4


1

Silverlightでテキストをどのように正当化しますか?

Silverlight 2で読み取り専用テキスト(「TextBlock」にレンダリングされる)を*正当化する*方法について何か提案がありますか? WPFは `TextAlignment`列挙体によるテキストの位置揃えをサポートします。

public enum TextAlignment
{
    Left,
    Right,
    Center,
    Justify // <--- Missing from Silverlight :(
}

ただし、Silverlight 2は次のものしかサポートしていません。

public enum TextAlignment
{
    Center,
    Left,
    Right
}

どんなアイデアや提案も感謝しています。

5 Answer


1


私の頭の上には、これを行うための2つの簡単ではない方法が考えられます。 一つはどちらかというと足りないです。単語間にスペースを追加します。 もう1つの方法は、各単語がそれぞれ独自のテキストブロックになるようにテキストを何らかの方法で解析することです。次に、グリッドを使用して行の最初の単語を左寄せし、最後の単語を右寄せしてから、スタックパネルなどを使用して中央のセル

どの単語が行の始まりと終わりであるかを判断するには、各ブロックのレンダリングされたサイズを測定し、それが収まるかどうかを判断する必要があります。 簡単ではありませんが、うまくいくはずです。


0


http://math-geek-rock-chick.blogspot.com/2008/08/silverlight-and-text-alignjustify.html - 私はそれについてのブログ記事を見つけました。 その考えは、テキストを個々の行に分割してから、各行にScaleTransformを適用してテキストを左(RenderTransformOrigin = 0,0)から右(Scale.X = 1.02)にスケーリングすることです。 しかし、この方法は小さなテキスト部分にのみ有効であり、TextBoxのサイズが変更された場合はおそらく処理速度が低下します。


0


明らかに唯一の解決策は、(Jeff Yatesが上で示唆したように)列を越えてテキスト行を単語とレイアウト単語に分割することです。 まず最初に、グリッドコンテナを使ってアイデアを検証します。


次のステップは、グリッドを扱わずにテキストブロックのレイアウトを実行するカスタムパネルを作成することです。


(サンプルのソースコードはhttp://net-dostupa.blogspot.com/2010/06/silverlight-textalignmentjustify.html [my blog]から入手可能です)最後に、テキストを単語とレイアウトに分割するJustifiedTextBlockコントロールを作成します。それら。 ここで重要なことは、適切なRTLサポートと正しい行分割です。


0


今、あなたは ``を使用することができ、それは素晴らしいでしょう。

あなたが望むならば、これはRudy Huynからのフランスのtutoです:http://www.rudyhuyn.com/blog/2011/11/08/comment-justifier-du-texte-sous-windows-phone/


-2


これらがあなたのニーズを満たしていない場合は、いずれかのenumを使用する代わりに、エクステンダまたはコンバータを作成してそれにバインドする必要があります。