This may not be the direct answer to your question, but I think a better way to do this would be use a ListView. Then, you can use a DataTemplate for read items, and a different one for unread items. Then, just binding the set of mail items to this listview will cause the ListView to generate and display the UI for all the items. The main advantage of this will be that the UI will be virtualized, meaning UI items will be generated only as needed (when they scroll into view) and will be disposed automatically, keeping your UI responsive even when you have a huge number of items in the ListView.
You can then implement a DataTemplateSelector to pick between the two DataTemplates, based on some of the attributes of the mail items.