TextBlock はBoldやItalic, Span, Run 等の インラインフロードキュメント要素を表示するテキストに含めることができます。Run要素を使用してTextBlockの要素ごとに書式を設定するサンプルの覚書を記載します。インファインフロードキュメントの各要素を設定するには TextBlockのInlines プロパティに各要素を追加します。詳細は下記ページを参照。Inline要素で使用できるいくつかのタグが例の欄に表示されています。インラインフローの要素となるクラスはSystem.Windows.Documents.Inlineを継承しています。

TextBlock.Inlines プロパティ
http://msdn.microsoft.com/ja-jp/library/system.windows.controls.textblock.inlines.aspx

検証環境

  • .NET 4.0
  • Visual Studio 2010 Ultimate
  • Windows Server 2008 R2

1.サンプルXAML

WPFテンプレートからプロジェクトを作成し、既定で作成されるMainWindow.xaml を次のように設定します。

<Window x:Class="FormatSample.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" SizeToContent="WidthAndHeight">
    <StackPanel>
        <TextBlock>
            <TextBlock.Inlines>
                <Run Text="平成" Background="YellowGreen"></Run>
                <Run Text="25" TextBlock.Foreground="Red" TextBlock.FontSize="30"></Run>
                <Run Text="年" Background="SkyBlue"></Run>
                <Run Text="2" TextBlock.FontSize="30"></Run>
                <Run Text="月" Background="Cyan"></Run>      
                <Run Text="10" TextBlock.FontSize="30" TextBlock.Foreground="Magenta" TextBlock.FontFamily="Meiryo UI"></Run>
                <Run Text="日" TextBlock.FontWeight="Bold" Background="Tomato"></Run> 
                
            </TextBlock.Inlines>
        </TextBlock>
    </StackPanel>
</Window>

プログラムを実行すると次のように画面に表示されます。TextBlockの添付プロパティやRunのプロパティを使用して書式を細かく設定できます。Run要素のText プロパティはDependencyProperty なのでモデルとバインディングできます。そのため、動的に表示する内容を変更することも可能です。

Run要素間に改行が含まれると表示されるテキストの項目間に空白(スペース)が表示されます。<Run>要素のテキストの間でスペースが含まれないようにするには、次のように<Run>要素間に改行が含まれないようにします。ただ、XAMLドキュメントを自動で整形(Ctrl K + D)すると改行されてしまうのですが。。。

<Run Text="平成"></Run><Run Text="25"></Run>

2.まとめ

説明は以上です。TextBlockのインラインドキュメント要素表示機能を使用することで項目ごとに書式設定できます。また、Run要素を使用することでモデルクラスのプロパティと表示するテキストをバインドすることができます。