.NET TIPS

[WPF、Silverlight 2]リストボックス内でTextBlockコントロールの文字列を折り返すには?[XAML]

デジタルアドバンテージ 遠藤 孝信
2010/02/04

 テキストを表示するためのTextBlockコントロールでは、TextWrapping属性に「Wrap」を指定することにより、コントロールの幅に合わせてテキストを折り返して表示できる(既定値は「NoWrap」)。

 しかし、リストボックスの項目としてTextBlockコントロールを使用する場合、TextWrappingプロパティに「Wrap」を設定しても、折り返し表示されない(代わりにリストボックスに横スクロールバーが現れる)。

 以下は、その状態を示すためのWPFアプリケーションのサンプル・コード(XAMLコード)と、その実行画面である。

<Window x:Class="HScrollDisWPF.Window1"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  Title="Window1" Height="300" Width="300">

  <Grid>
    <ListBox>

      <TextBlock TextWrapping="Wrap">
        長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト
      </TextBlock>

      <TextBlock TextWrapping="Wrap">
        長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト
      </TextBlock>

    </ListBox>
  </Grid>
</Window>
WPFアプリケーションのサンプル・コード(XAML)


上記サンプル・コードの実行画面
折り返し設定にもかかわらず、長いテキストは折り返されず、代わりにリストボックスに横スクロールバーが付く。

 これは、既定ではリストボックスが横スクロール可能(=横幅のサイズが無制限)であるため)、TextBlockコントロールでの折り返し表示が不要と判断されるためだ。

 このようなケースでテキストを折り返し表示するには、リストボックスで横スクロールバーの表示を禁止すればよい。これには、ScrollViewer.HorizontalScrollBarVisibility属性を「Disable」に設定すればよい(既定値は「Auto」)

 以下は、これを行った場合のWPFアプリケーションのサンプル・コード(XAMLコード)と、その実行画面である。

<Window x:Class="HScrollDisWPF.Window1"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  Title="Window1" Height="300" Width="300">

  <Grid>
    <ListBox
      ScrollViewer.HorizontalScrollBarVisibility="Disabled">

      <TextBlock TextWrapping="Wrap">
        長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト
      </TextBlock>

      <TextBlock TextWrapping="Wrap">
        長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト長いテキスト
      </TextBlock>

    </ListBox>
  </Grid>
</Window>
テキストを折り返し表示するサンプル・コード(XAML)


上記サンプル・コードの実行画面
長いテキストは折り返され、リストボックスには横スクロールバーが表示されない。

 以上はWPFアプリケーションのコードや画面で説明したが、Silverlightでもまったく同様の設定により、リストボックス内でのTextBlockコントロールの表示を折り返すことができる。End of Article

カテゴリ:WPF 処理対象:TextBlockコントロール
カテゴリ:Silverlight 2 処理対象:TextBlockコントロール
使用ライブラリ:TextBlockコントロール(System.Windows.Controls名前空間)
使用ライブラリ:ListBoxコントロール(System.Windows.Controls名前空間)

この記事と関連性の高い別の.NET TIPS
[WPF、Silverlight 2]リストボックスの幅全体に項目を表示するには?
[Silverlight 2]TextBlockコントロールに背景色を設定するには?
リストボックスの各項目に値をひも付けるには?
DataGridViewコントロールのセルの文字列を複数行で表示するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間