none
TextBlock を文字単位で折り返して表示したい RRS feed

  • 質問

  • WPF の TextBlock に Width を指定して、TextWrapping プロパティを Wrap に設定することで、自動で折り返すことができますが、折り返しが単語単位になってしまいます。(つまり、半角スペースなどの区切り文字のところで適切に改行される)単語単位ではなく文字単位で改行させたいのですが、何か良い方法はあるでしょうか?

    要するに、表示幅が決まっていて、その右端で(単語の区切り等は無視して)折り返したいのです。FormattedText を使って文字幅を計算して、LineBreak を入れるという手はありそうな気はしていますが、もっと簡単な方法があればと思った次第です。

    よろしくお願いします。

    Visual Studio 2010 Professional Edition/WPF (C#) /.NET Framework 4.0

    2010年7月21日 14:38

すべての返信

  • xaml.cs側定義:

    string someText = "表示したいテキスト";

    char[] charList = someText.ToCharArray();

    foreach(var singleChar in charList)

    {

       var textBlock = new TextBlock(){Text = "" + singleChar};

       textBlock.Margin = new Thickness(0);

       textBodyArea.Children.Add(textBlock);

    }

    xaml側定義:

    <WrapPanel x:Name="textBodyArea" Orientation = "Horizontal"></WrapPanel>

    ↑これを参考にしてみてください。



    • 編集済み NS2039 2019年4月5日 2:17
    2019年4月5日 2:16