Honestly, this is one of the reasons why I don't like Event Based Data Layers... the number of steps involved that can lead to lost tracking...
Example: User Clicks a button
- Rule detecting the click, to put data in to the Data Layer is triggered
- Data is added to the Data Layer
- Rule to detect the Data Layer Change is triggered
- Tracking based on the Data Layer event is fired
Instead of just listening for the click event and firing the analytics on that one step.... While there is still a possibility to lose tracking due to timing, the risk is a lot less....
Since you are triggering all the steps, have you tried just a simple rule to detect the button click and send the tracking as part of that rule... rather than pushing to the Data Layer?
Unfortunately, as @farazhusain said, there is no way to force this... as the Data Layer being deleted upon changing pages is a fundamental behaviour of websites, and nothing to do with Adobe...
The only way to "persist" a Data Layer is when the website is coded as a Single Page Application (meaning there is no purge of objects between actions)... but this comes with its own set of challenges.. like some data being incorrectly maintained where it shouldn't... and for long sessions, the Data Layer will continue to grow and can cause performance issues trying to maintain so much data, so you often have to build in your own purge to keep things running smoothly....