今回は
TextBlock(System.Windows.Controls.TextBlock)です。
まずはMSDNの説明を見てみましょう。
少量のフロー コンテンツを表示する軽量コントロールを提供します。
TextBlockコントロールは少量のフローコンテンツを表示する軽量コントロールと説明されています。
少量のフローコンテンツとはどのようなものでしょうか?まずはTextBlockの簡単な使用例を見てみましょう。
- XAML -
<Window x:Class="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">
<StackPanel>
<TextBlock>TextBlockによってテキストを表示しています。</TextBlock>
<TextBlock Text="TextBlockによってテキストを表示しています。" />
</StackPanel>
</Window>
上記例では「TextBlockによってテキストを表示しています。」という文字列をTextBlockコントロールのコンテンツ構文にて表示している例と、TextBlockコントロールの
Textプロパティを使用して表示している例です。
使用例を見る限りでは、TextBlockコントロールのコンテンツプロパティはTextプロパティかと思いますが、TextBlockコントロールのコンテンツプロパティは
Inlinesプロパティとなっています。
Inlinesプロパティは
Inlineクラス(System.Windows.Documents.Inline)クラスを格納するコレクションクラスであり、このInlineクラスというのがMSDNの説明で書かれている「フローコンテンツ」と呼ばれる要素になっています。
WPFではさまざまなフローコンテンツがあり、すべてInlineクラスを抽象クラスとして実装されています。このさまざまフローコンテンツを使用する事により、柔軟なテキストの表示をTextBlockコントロールで行えるようになります。
ではフローコンテンツを使用してテキストを表示する例を見てみましょう。
- XAML -
<Window x:Class="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" Loaded="Window_Loaded">
<TextBlock>
<Bold>これは太字です。</Bold>
<LineBreak />
これは<Italic>Italic Font</Italic>です。
<LineBreak />
</TextBlock>
</Window>
上記例では改行を表すフローコンテンツの
LineBreakクラスと、太字のフォントで表示するフローコンテンツの
Boldクラスと、斜体のフォントで表示するフローコンテンツの
Italicクラスを使用した例です。
フローコンテンツはそれ単体レベルにてフォントサイズや前景色や背景色など設定する事が出来ます。上記例のコードにフローコンテンツ単位でプロパティを設定した例を見てみましょう。
- XAML -
<Window x:Class="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" Loaded="Window_Loaded">
<TextBlock>
<Bold Foreground="Blue" FontSize="40" FontFamily="MS 明朝">これは太字です。</Bold>
<LineBreak />
これは<Italic Foreground="Pink" FontSize="25" FontFamily="Tahoma">Italic Font</Italic>です。
<LineBreak />
</TextBlock>
</Window>
このように、TextBlockコントロールではフローコンテンツを使用して柔軟なテキストの表示を行うことが出来ます。
フローコンテンツは複数提供されていますので、その詳細は
こちらを拝見してください。
TextBlockコントロールはMSDNでの説明でも書かれている通りに、少量のフローコンテンツを表示する為に設計されたコントロールです。
大量のフローコンテンツを使用したり、沢山の改行を行うようような場合にはTextBlockコントロールは向いていません。
そのような場合には
FlowDocumentクラスを使用するとTextBlockコントロールより優れたパフォーマンスが得られます。
また、コントロールラベルや装飾のないプレーンテキストを表示する場合であるならばTextBlockコントロールより少量のリソースで済む
Labelコントロールを使用するのも良いでしょう。
TextBlockコントロールはWPFでは使用頻度の高いコントロールですので、是非使用できるようになりましょう。
今回は「TextBlock」コントロールでした。
to be continue・・・