If you’ve used the the Silverlight 2 DataGrid, you’ve no doubt seen this:
I really hate when this happens! I’ve seen several forum discussions where folks were looking to get rid of this nastiness, so I know I’m not the only one losing sleep over it. I haven’t come across a solution in anything I’ve seen and so now that I have one, I thought I’d share it.
I ran into this a few weeks back and tried most of the obvious things with defining the DataGridColumns myself rather than auto-generating them. In these defined DataGridColumns, I tried setting the Width of the last column to "*" just like you would a standard Grid.ColumnDefinition if you wanted to have it take up the remainder of the space. This did nothing more than invite my buddy, AG_E_PARSER_BAD_PROPERTY, to show up…again. It appears that star-sizing isn’t yet implemented for DataGridColumn derivatives.
This morning I was finally able to grab a few minutes to dive into DataGrid and find out what I could do about this. I decided to create an ExtendedDataGrid and add a LastColumnFill DependencyProperty similar to way the DockPanel has a LastChildFill. Most of the work is happening in this method which is called if the LastColumnFill is true:
This is the result:
Much better! The live demo shows it with and without a vertical scrollbar. Note that it also handles
auto-generated DataGridColumns if that’s your thang.
Here’s the live demo.
Here’s the code.