Hello again Jake,
Thank you for sharing the latest version.
Responding to your questions: to pass data from a block to its parent with an event, you'll need to trigger that event. Usually it is done using a button or a link.
It seems that your use case is a bit different, since you have your button outside the block. In this scenario, you won't have access to the variables inside the block, because they are not accessible in the parent scope. That's why it is better to have the button inside the block, it just facilitates your code.
However, if you really want to have it that way, it is possible to have that button in the parent screen and still accomplish what you pretend. It's a bit more complex, still doable :)
Let me give you an example:
What you can do is to have a hidden button inside the block SectionDetailWB (this button won't be visible for the user) and this button calls a screen action (in the block) to save your section details (SaveSection).
After this, back to your parent screen (TestScreen), when you press in the Save Section button, you will need to trigger that hidden button.
For example, you can do this using JavaScript (RunJavaScript action from HTTPRequestHandler extension) in order to force this click in this hidden button. Basically the JavaScript will search for this hidden button in the entire page and trigger it.

Please refer to attached OML file.
Hope that this helps you!
Kind regards,
Rui Barradas