So most of the Q&A I've researched here deals with MAINTAINING the aspect ratio while scaling, but I'm trying to achieve scaling while simultaneously adjusting the aspect ratio to maintain a horizontal fill. This might be easier to explain with images, so let's say this is the original:
Now, with this current layout, whenever I resize the outermost container, the Viewbox is scaling everything inside (Uniform stretch) while maintaining the aspect ratio, so if I shrink the container vertically, I end up with some whitespace on the sides:
What I want to happen in the above case is for the content width to stretch horizontally first, and then for the vertical content sizes (e.g. font sizes, element heights, etc) to scale as necessary so that all the content continues to be visible.
If there is a horizontal resize of the outermost container, I want the same kind of behavior - the grid should scale horizontally (and thus increase the element widths). This is harder to see since the screenshot is horizontally resized itself, but this screenshot is originally wider than the others:
Now, I've been experimenting with the various Stretch, HorizontalAlignment, and VerticalAlignment settings primary on the Viewbox, and the closest thing to what I want is:
<Viewbox HorizontalAlignment="Stretch" VerticalAlignment="Top" Stretch="Fill">
<MyUserControl />
</Viewbox>
This gives me the desired "fill" type of layout, but the problem is obviously that it is vertically distorting the contents, so if I vertically shrink the container, I end up with squished text rather than fonts that are simply adjusted in size.
Given my understanding of how Viewbox works, I'm not surprised at this, so I'm guessing that I would need to instead hook into the Viewbox's SizeChanged event and use that to adjust MyUserControl's height (and have it trickle down to the Grid).
This particular answer looked promising: Making a Viewbox scale vertically but stretch horizontally
...but the top-voted answer on it seemed to make the content position act pretty strangely. If I shrank the container past a certain point, the content / user control would jump over to the right and start going off of the screen.