Show / Hide Table of Contents

Dialog - splitters

How to add a splitter:

  • Need 3 or more columns (for vertical splitter) or rows (for horizontal splitter). Don't use auto-sized columns.
  • Add a GridSplitter control in a middle column or row.
  • Call wpfBuilder.Splitter to set splitter properties; for vertical splitter specify how many rows it spans.
  • If vertical splitter spans multiple rows, in other rows call wpfBuilder.Skip to make space for the splitter.
using System.Windows;
using System.Windows.Controls;

Horizontal splitter.

var bh = new wpfBuilder("Window").WinSize(400).Height(400);
bh.Columns(-1, -1);
bh.Row(-1).Add(out TextBox _).Add(out TextBox _); //top row
bh.R.Add<GridSplitter>().Splitter(vertical: false); //add splitter in the middle row
bh.Row(-1).Add(out TextBox _).Add(out TextBox _); //bottom row
bh.R.AddOkCancel();
bh.End();
if (!bh.ShowDialog()) return;

Vertical splitter.

var bv = new wpfBuilder("Window").WinSize(400);
bv.Columns(-1, 0, -1); //3 columns (control, splitter, control)
bv.R.Add(out TextBox _) //add control in the left column
	.Add<GridSplitter>().Splitter(vertical: true, 2) //add splitter in the middle column; let it span 2 rows
	.Add(out TextBox _); //add control in the left column
bv.R.Add(out TextBox _) //second row
	.Skip() //make space for the splitter
	.Add(out TextBox _);
bv.R.AddOkCancel();
bv.End();
if (!bv.ShowDialog()) return;

Two vertical splitters.

var b2 = new wpfBuilder("Window").WinSize(400);
b2.Columns(-1, 0, -1, 0, -1); //5 columns (control, splitter, control, splitter, control)
b2.R.StartGrid().R.Add("Text1", out TextBox _).R.Add("Text2", out TextBox _).End(); //left panel
b2.Add<GridSplitter>().Splitter(vertical: true);
b2.StartGrid().R.Add("Text1", out TextBox _).R.Add("Text2", out TextBox _).End(); //center panel
b2.Add<GridSplitter>().Splitter(vertical: true);
b2.StartGrid().R.Add("Text1", out TextBox _).R.Add("Text2", out TextBox _).End(); //right panel
b2.R.AddOkCancel();
b2.End();
if (!b2.ShowDialog()) return;

Vertical and horizontal.

var bvh = new wpfBuilder("Window").WinSize(400, 400);
bvh.Columns(-1, 0, -1);
bvh.Row(-1).Add(out TextBox _)
	.Add<GridSplitter>().Splitter(vertical: true, 3)
	.Add(out TextBox _);
bvh.R.Add<GridSplitter>().Splitter(vertical: false);
bvh.Row(-1).Add(out TextBox _)
	.Skip()
	.Add(out TextBox _);
bvh.R.AddOkCancel();
bvh.End();
if (!bvh.ShowDialog()) return;

Vertical and horizontal. Horizontal in the right side only.

var b3 = new wpfBuilder("Window").WinSize(400, 400);
b3.Options(margin: new(0));
b3.Columns(100, 0, -1);
b3.Row(-1).Add(out TextBox _);
b3.Add<GridSplitter>().Splitter(vertical: true);
b3.StartGrid()
	.Row(-2).Add(out TextBox _)
	.R.Add<GridSplitter>().Splitter(vertical: false)
	.Row(-1).Add(out TextBox _)
	.End();
b3.Options(margin: new(3));
b3.R.AddOkCancel();
b3.End();
if (!b3.ShowDialog()) return;