Our 07 C190P Roadtrek with the 6.0 engine and 4L80E transmission, like all heavy stuff, downshifts under full power a lot while climbing hills. High load, high rpm downshifts are fairly hard on a transmission compared to normal driving and shifting, so minimizing them has always been something I try to do.
It downshifts the most when on cruise in the rolling hills, so I normally will take it out of cruise for the hill or if it is really rolling hills, just drive it all the time. Building some speed on the downhills and flats before a hill, and letting it slow a little on the upgrade can mostly stop the downshifting. Even driving it without cruise, it would sometimes surprise me and downshift, though, especially if there was a headwind, though.
On our last outing, I set the Scangauge to read the engine load (LOD on the Scangauge). I wasn't sure what it really read from the description, but it got pretty obvious in use. It is actually seems to be reading the % of horsepower the engine is making, compared to the maximum amount of horsepower it could make at that rpm and other conditions like altitude and temperature.
Having it read that way makes using it to control downshifts really easy in most cases with the Chevy. It will not downshift until it gets to 99-100% load, so all you need to do it back off the throttle to be less than that and it won't downshift unexpectedly. Worked very well for me over our about 3K miles.
The only time it I got fooled was if the load was changing very rapidly. I had it downshift at 97-98% a couple of times. I think it is because of the update lag of the Scangauge. If the load was climbing quickly, I just stayed at 96% or lower and then had no problem, but still would go to 98% for slow changing load.
A bonus is that preventing the downshifts can increase fuel mileage quite a bit in rolling hills, maybe 1 mpg. If you have the Scangauge showing the mpg, either instantaneous, or trip, you can actually see how much it changes at a downshift.
Plus, it keeps me amused on long drives