Hi,
Please find attached a simple project demonstrating strange behaviour with setting the "Generic" theme.
We have a base class that inherits from XamDataGrid. In here I set the active theme in code and to keep it simple, bind to sample data for this demo. I then use a copy of this new control within a window.
As you can see, the height of all the rows has become squashed, meaning you can't even see the headers.
I found that if I also set Theme="Generic" in the window in which my derived control is situated, all works ok.
I don't want to have to specify the theme on every instance of my control being used, I just want to set it in the base class so any changes here would apply globally.
Regards,
Dave
Hello Dave,
I am assuming that the Initialized event is too early for this. You can try with the Loaded and FieldLayoutInitialized, which are fired after Initialized event and it should work correctly. I was able to reproduce only the header incorrect size and not the records incorrect size. Please try with these events and let us know if it solves this issue?
Dave,
And thanks for providing a sample once again. It's really easy and fast to reproduce/suggest a solution when we have a sample to work with right away.
Hi Alex,
No problem :-) Good point... I hadn't thought about using the Loaded event instead.
It does indeed work if you move either of the two lines into the Loaded event. We also know that specifying the Theme in Doc1.xaml makes it work. I found it also works if you leave the two lines in the Initialized event and add the following few lines to the Loaded event:
Dim theme As String = Me.Theme
Me.Theme = String.Empty
Me.Theme = theme
So, by making it think it's changing theme, also works. The one thing all these methods have in common, is they force the grid to redraw after the Loaded event occurs.
I think this is a bug. I believe it *should* be laying out the visuals correctly without using any of the above workarounds. Something must be happening after the Initialized event, that is vital to the measure/arrange phase. If it were not technically possible to set the theme and bind to data before the Loaded event occurs, I would expect it to throw an exception to notify you of the fact.
Also, the reason you only see the headers squashed and not the data rows, I expect, is down to you running it on Vista. I'm running XP, but have just run it on a Vista box and it only affects the headers.
I would consult myself with the development team to double check this behavior. I will update the thread when I have more information on this and will open a support case for you if this is an issue.
I am creating a case on your behalf for this issue.
Was this issue ever resolved?
Hi Tammy,
Yes, this issue was fixed back on 5th Nov '09...
Issue "22990: Incorrect DataRecordPresenter height when setting the theme in the Initialized event" has been addressed in service release versions 10.1.20101.17, 9.2.20092.2012, 9.1.20091.2131.