C#のWPFでTextBlockやLabelのテキストを改行する

WPFの TextBlock や Label や Bottun などのコントロールで表示するテキストを改行していという事があると思います。

 

WPFではコントロールのテキストを改行して表示する為の方法がいくつかあります。

ここではその方法について解説します。

<LineBreak/>を利用する方法

XAMLでは改行を表す<LineBreak/>という要素があります。

 

<TextBlock>のコンテンツとして<LineBreak/>を入れ込む事で改行する事ができます。

<Label> や <Button> のようなコントロールでは子要素に<TextBlock>を入れて使います。

<Window x:Class="WpfTest1.TestWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfTest1"
        mc:Ignorable="d"
        Title="TestWindow" Height="300" Width="300">
    <WrapPanel>
        <TextBlock>
            1行目<LineBreak />
            2行目<LineBreak />
            3行目
        </TextBlock>
        <Label>
            <TextBlock>
                1行目<LineBreak />
                2行目<LineBreak />
                3行目
            </TextBlock>
        </Label>
        <Button>
            <TextBlock>
                1行目<LineBreak />
                2行目<LineBreak />
                3行目
            </TextBlock>
        </Button>
    </WrapPanel>
</Window>

特殊文字コードを使う例

 &#10;もしくは&#xA;という特殊文字コードを使って改行する事ができます。

 ※&#10;と&#xA;は同じ意味です

 ※#の場合は10進数表記で改行を示す10(16進数の0x0A)を指定します

 ※#xの場合は16進数表記で改行を示すA(10進数の10)を指定します

 

<LineBreak/>は記述が長くなり面倒ですが、特殊文字コードを使えば楽に記述できます。

<Window x:Class="WpfTest1.TestWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfTest1"
        mc:Ignorable="d"
        Title="TestWindow" Height="300" Width="300">
    <WrapPanel>
        <TextBlock Text="1行目&#10;2行目&#10;3行目"/>
        <Label  Content="1行目&#10;2行目&#10;3行目"/>
        <Button Content="1行目&#xA;2行目&#xa;3行目"/>
    </WrapPanel>
</Window>

ソースコードから改行する方法

C#のソースコートから改行を含んだ文字列を指定する場合は改行コード「\n」を使います。

 

public TestWindow()
{
    InitializeComponent();

    TestTextBlock.Text = "1行目\n2行目\n3行目";
    TestLabel.Content  = "1行目\n2行目\n3行目";
    TestButton.Content = "1行目\n2行目\n3行目";
}