|
.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コントロールの表示を折り返すことができる。
カテゴリ:WPF 処理対象:TextBlockコントロール
カテゴリ:Silverlight 2 処理対象:TextBlockコントロール
使用ライブラリ:TextBlockコントロール(System.Windows.Controls名前空間)
使用ライブラリ:ListBoxコントロール(System.Windows.Controls名前空間)
|
|
generated by
|
|
Insider.NET 記事ランキング
本日
月間