I am glad that you decided to give our tools a try. We will try to help with whatever we can with your scenario.
I apologize for the delay in my answer but I had to test a few possible solutions to the problems you are facing.
1. Nesting grids.
Generally speaking, RadGridView supports hierarchy that resembles the case of nesting grids. There are some examples with hierarchy in our Demo app, which you may want to look at.
On the other hand nesting RadGridViews (or any controls) as child grids is possible and relatively easy to implement, but it will greatly affect performance. In the attached project I have demonstrated the way to do nested grids.
The problem of nesting controls in a data-bound control can also be solved by using the MS DataRepeater control. If you are not familiar with it, I have prepared another sample, which you can find in the attached project. Basically DataRepeater clones all controls initially added to its ItemTemplate in the designer and you just need to add a few more lines of code to make RadControls work with it. As you will see from the attached project, the scrolling in this case is smoother, because DataRepeater has all items in the same size and does not rely on heavy calculations. Let me know if you need assistance with this one.
Moving to the next question, currently RadGridView can be used only as a control. There is no standalone RadItem that represents RadGridView functionality.
As to browsing code and inheritors of RadItem, you can use .Net Reflector
. It can navigate and find all classes that inherit from RadItem. Some of the 3dr party code navigation and refactoring tools, like Resharper also support this functionality. Unfortunately our documentation does not contain information on this which can help you.
2. Calculating the grid's total height is not a simple task. It depends on many conditions, like whether the automatic-row sizing is turned on, virtual mode is on, and so on. RadGridVeiw was not designed to handle this case and there is no convenient API to this. I will consult with other devs to see if we can come up with a reasonable solution for this.
3. In a Panel control (an any scollable control), you can scroll automatically the selected control into view. Thus if you walk through the child controls with the Tab key, the Panel will scroll to the top of the next control. I am not 100% sure about this, but I think if you have the correct control focused, the scroll position will not be affected after alt+tab. Please let me know if this does not solve the problem.
4 HitTesting. The answer of this question depends on the specific case. RadGridView for example, has convenient events for mouse-enter/leave for most of its significant UI elements, like cells, row, etc. If you need more general hit testing for any elements within a RadControl instance you can use this method:
If your case involves monitoring the currently hovered RadElement within RadControl, you can handle the following event:
Also each RadElement has HitTest(Point) method that can be used to hit-test a specific element instance.
We have both online
and MSDN-style documentation (installed together with the controls). Unfortunately our documentation currently does not include inheritance diagrams. But as I already mentioned - Reflector together with some other free plug-ins can give a good idea on RadControls class hierarchy.
Let me know how it goes and if I can help with any other questions.
the Telerik team
, the state of the art learning tool for Telerik products.