.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コントロールに背景色を設定するには?
リストボックスの各項目に値をひも付けるには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」

@IT Special

- PR -

TechTargetジャパン

Insider.NET フォーラム 新着記事
  • Listの要素を並べ替えるには? (2017/3/22)
     LINQのOrderBy/ThenByなどの拡張メソッドとListクラスのSortメソッドを利用して、Listの要素を並べ替える方法を解説する
  • .NET Portability Analyzer (2017/3/21)
     .NET Portability Analyzerは、さまざまなプラットフォームをまたいだ.NETプログラムの移植性をチェックするためのツール
  • Visual Studio Previewとは? (2017/3/17)
     Visual Studio 2017のリリースと同時に始まった「Visual Studio Preview」と呼ばれる早期アクセスプログラムの概要を見ていこう
  • Listの要素を検索するには? (2017/3/15)
     ListクラスのメソッドあるいはLINQ拡張メソッドを利用して、条件に合致する要素をリストから検索する方法を紹介する
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

イベントカレンダー

PickUpイベント

- PR -

アクセスランキング

もっと見る

ホワイトペーパーTechTargetジャパン

注目のテーマ

Insider.NET 記事ランキング

本日 月間
ソリューションFLASH