WPFでウィンドウの幅や高さに合わせてコントロールのサイズを自動変更する設定手順を紹介します。
なお、Windows Formでウィンドウの幅や高さに合わせてコントロールのサイズを自動変更する設定についてはこちらの記事を参照してください。
WPFのフォームに配置したウィンドウコントロールにはAnchorプロパティが無いため、ウィンドウの幅や高さに合わせてコントロールのサイズを変更する場合にはMarginプロパティを利用します。
WPFアプリケーションを新規作成します。作成後メインフォームのデザイナを表示します。
左側のツールボックスウィンドウから"TextBox"をクリックし選択しフォームにドロップします。フォームにTextBoxが配置されます。
TextBoxのハンドルをドラッグしてテキストボックスのサイズを変更します。ウィンドウの幅と同じ程度にサイズ変更します。
プロジェクトを実行します。下図のウィンドウが表示されます。
ウィンドウの枠をドラッグしてウィンドウのサイズを変更します。ウィンドウのサイズが変更されてもテキストボックスは起動時に表示されたサイズからは変わりません。
アプリのデバッグ実行を停止します。
フォームデザイナを表示します。
フォームデザイナのテキストボックスの右側の逆Cの字のアイコンの部分をクリックします。
クリックすると、アイコンの形状が連結された状態の画像に変わります。この状態でウィンドウのサイズを変更するとコントロールのサイズも自動で変更される設定になります。
アイコンのクリック前後のXAMLのコードは下記になります。
<Window x:Class="SimpleDockWpf.MainWindow"
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:SimpleDockWpf"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TextBox Height="23" Margin="10,10,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" HorizontalAlignment="Left" Width="497"/>
</Grid>
</Window>
<Window x:Class="SimpleDockWpf.MainWindow"
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:SimpleDockWpf"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TextBox Height="23" Margin="10,10,10,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top"/>
</Grid>
</Window>
「Margin="10,10,0,0"」がアイコンをクリックすることで、「Margin="10,10,10,0"」に変わることが確認できます。
「HorizontalAlignment="Left" Width="497"」の記述もなくなります。
以上で、ウィンドウの幅や高さに合わせてコントロールのサイズが変化するようになります。