purtroppo seguendo il tuo esempio non riesco a riprodurre il problema, a me funziona cosi come deve essere.

ti posto il mio codice completo, sul notebook ho visual studio express per winphone ma il codice è facilmente adattabile per winform

codice:
public class Persona
    {
        public string Nome { get; set; }
        public string Cognome { get; set; }
        public int Eta { get; set; }
    }

    public partial class MainPage : PhoneApplicationPage
    {
        public static List<Persona> elenco { get; set; }

        // Constructor
        public MainPage()
        {
            elenco = new List<Persona>();
            elenco.Add(new Persona { Nome = "Nome 1", Cognome = "Cognome1", Eta = 11 });
            elenco.Add(new Persona { Nome = "Nome 2", Cognome = "Cognome2", Eta = 22 });
            elenco.Add(new Persona { Nome = "Nome 3", Cognome = "Cognome3", Eta = 33 });
            elenco.Add(new Persona { Nome = "Nome 4", Cognome = "Cognome4", Eta = 44 });

            InitializeComponent();

            foreach (PropertyInfo pi in typeof(Persona).GetProperties())
            { 
                TextBox tb = new TextBox{ Text = pi.GetValue(elenco[1], null).ToString() };
                ContentPanel.Children.Add(tb);
            }
        }
    }