Show / Hide Table of Contents

Dialog - DataGrid

using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Input;
using System.Windows.Media;
using System.Collections.ObjectModel;
using System.Windows.Data;

//create dialog
var b = new wpfBuilder("DataGrid example").WinSize(400, 400);

var g = new DataGrid {
	AutoGenerateColumns = false,
	AlternatingRowBackground = Brushes.Wheat,
	GridLinesVisibility = DataGridGridLinesVisibility.Vertical,
	VerticalGridLinesBrush = Brushes.LightGray,
	//IsReadOnly = true,
};
b.Row(-1).Add(g);

b.R.AddOkCancel();
b.End();

//columns, properties
g.Columns.Add(new DataGridCheckBoxColumn { Binding = new Binding("Check"), Width = 20 });
g.Columns.Add(new DataGridTextColumn { Header = "Editable", Binding = new Binding("Text"), Width = new(1, DataGridLengthUnitType.Star) });
g.Columns.Add(new DataGridTextColumn { Header = "Readonly", Binding = new Binding("Comment"), IsReadOnly = true, Width = 100 });

//data
var a = new ObservableCollection<Abc>() { //or List<Abc>
	new(true, "text 1"),
	new(!true, "text 2", "comment"),
	new(true, "text 3"),
	new(!true, "text 4"),
};
g.ItemsSource = a;

if (!b.ShowDialog()) return;

print.it(a); //automatically updated when the user edits cells

//row data type
record Abc(bool Check, string Text, string Password = null) {
	public Abc() : this(false, null) {  }
}