Preface
I'm continuing the Deep Dive into WPF series. Over the years I've built many projects with WPF and written quite a bit of miscellaneous material; here is a rough summary, and I hope it can help friends out there as well.
This article mainly implements a custom BindingEngine that can be used in WPF, WinForms, the Web, and other scenarios.
Introduction
As usual, let's find an entry point and start from there.
Since this is about enterprise applications, let's first talk about why a BindingEngine was needed.
The project background is a configuration-file editor for industrial machinery. There are roughly 200+ machines, each with 200+ parameters, and the app must support add/delete/modify, version control, Undo/Redo, and a series of other operations. The UI was built with WPF using the MVVM pattern, and the DataGrid control was chosen. To improve performance, Virtualizing and a series of other optimizations were used.…