It appears it cannot. Shelves are very limited.
Worse. When you have newer versions of files in your working copy than the ones shelve is based on, unshelve reverts to the older version instead of doing merge. And it's dumb as it reverts only files changed in shelve, not all branch. You need to remember to Get latest version before doing any work with unshelved code.
I think you'll have to move your changes manually. You can help yourself using some diff/patch tools.
At first I thought shelves were a neat feature. Now I think they are almost useless. Better and cheaper support for branching would eliminate any need for them.
I only use them to backup my current working copy when:
- I go home for the day (and I've yet never needed to unshelve them the next day)
- When I discover some minor bug while working on something bigger and want to have a clean checkin fixing it before commiting rest of my changes (so I shelve my work just for a few minutes).
In all other situation I use real development branches. You can use TFS's merge and baseless merge features with them. Still slow and pain in the a** but much better then manual moving changes with WinMerge, kdiff or whatever you use. They keep real history and let others really cooperate with you. And you can (with some effort) keep them in sync with mainstream development.