Seems like a reasonable approach. I might suggest just serializing/deserializing whatever class you end up with and writing to a file in RoamingFolder rather than RoamingSettings. It should be pretty easy to store and retrieve in more or less a single line of code (versus individual name/value pairs via RoamingSettings). This is essentially what the SuspensionManager does in some of the C#/XAML templates.
Be mindful or how much you are saving though, there are limits - your goal is to be able to restore the state of the application as the user perceives it, not necessarily save EVERYTHING, particularly if it can be reconstructed 'under the covers' when the application is re-activated.