ウインドウ内を左右に2分割し、中央のツマミ(GridSplitter)を左右に操作することで領域を増減させます。
ソースコード
ファイル名:gridSplitterSample.csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UseWPF>true</UseWPF>
</PropertyGroup>
</Project>
ファイル名:Program.cs
using System.Windows;
using System.Windows.Controls;
public static class Program
{
[System.STAThread]
public static void Main()
{
// グリッド
var grid = new Grid();
// グリッドカラム
grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1.0d, GridUnitType.Star) }); // 0 ... "1*"
grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(5.0d) }); // 1 ... "5"
grid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1.0d, GridUnitType.Star) }); // 2 ... "1*"
// 左パネル
var leftPanel = new StackPanel();
Grid.SetColumn(leftPanel, 0);
grid.Children.Add(leftPanel);
// 左パネル→ラベル
leftPanel.Children.Add(new TextBlock
{
Text = "左パネル",
Margin = new Thickness(12),
});
// 中央スプリッター(つまみ)
var splitter = new GridSplitter
{
HorizontalAlignment = HorizontalAlignment.Stretch,
};
Grid.SetColumn(splitter, 1);
grid.Children.Add(splitter);
// 右パネル
var rightPanel = new WrapPanel();
Grid.SetColumn(rightPanel, 2);
grid.Children.Add(rightPanel);
// 左パネル→ラベル
rightPanel.Children.Add(new TextBlock
{
Text = "右パネル",
Margin = new Thickness(12),
});
// ウィンドウ
var win = new Window
{
Title = "WinForm風WPF",
Width = 420,
Height = 260,
Content = grid
};
// アプリケーションの実行
new Application().Run(win);
}
}
実行イメージ
dotnet run
コメント