Let's imagine that we want to create an application that displays tabular data. This doesn't initially sound very complicated, but it is actually a very good example with which to demonstrate how to adapt the built-in .NET controls to fulfill our requirements. As we progress through this example, we will come across several potential problems and find out how to overcome each one in turn.
For this extended example, we will create a Spreadsheet control. As always, when creating new controls, we look at the existing controls, to see if any of them can provide us with a good starting point. The first control that springs to mind is the Grid panel, as it has rows and columns and therefore, also cells, but the creation of all of the RowDefinition and ColumnDefinition objects could be cumbersome or problematic.
There is also the UniformGrid panel, but as its name suggests, all of its cells are uniform, or the same size as each other, but this is...