[WPF] WPF入門 ~コントロール [TextBlock]~

投稿日 : 2009年4月14日 0:41
今回は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・・・
コメントの入力
タイトル
名前
Url
コメント