This is a high level idea ...
Create a global list that you use to specify the project and its “Current Iteration”. (TFS does not have the concept of "Current iteration", so you have to store it somewhere.) After each iteration, you will have to update this list to remove the old iteration and then add a new one.
Then you create a custom registration policy that requires the association of work items to register.
If it has an association of work items, then you check all of them (you can link more than one) to make sure that the iteration matches the “Current iteration” stored in the global list.
From my understanding of the TFS API client, all of these data points should be accessible. (The only thing I’m not sure about is that I’m 100% sure of getting the appropriate work items in the registration policy, but I would be very surprised if it is not there.)
source share