WPFにて、ボタンのテキストを改行して表示させる場合、TextBlock を入れ子にする方法があります。
xaml側、cs側の、どちらでも対応可能です。
(実行例)
(記述例)
xaml側
<Window x:Class="PracticeWPF.MyWindow10" 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:PracticeWPF" mc:Ignorable="d" Title="MyWindow10" Height="450" Width="800"> <Grid> <!-- ==========< ボタン内で改行を入れる >========== --> <StackPanel Width="500" Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Top" > <!-- xaml側で実現 --> <Button> <TextBlock x:Name="InnerTextBlock01" TextWrapping="Wrap" Text="ButtonにTextBlockを入れ子にできるよ。" Width="80" /> </Button> <!-- cs側で実現(csソース参照) --> <Button x:Name="Button02" Content="" Width="80"/> </StackPanel> </Grid> </Window>
cs側
using System.Windows; using System.Windows.Controls; namespace PracticeWPF { /// <summary> /// MyWindow10.xaml の相互作用ロジック /// </summary> public partial class MyWindow10 : Window { public MyWindow10() { InitializeComponent(); //==========< ボタン内で改行を入れる >========== //(コード側で設定) var b = new TextBlock(); b.Text = "TexoBlockのTextWrappingを使うと改行が楽だよ。"; b.TextWrapping = TextWrapping.Wrap; Button02.Content = b; } } }