Да. Чтобы создать новую строку, вызовите Grid.RowDefinitions.Add:
myGrid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Auto) });
Затем, чтобы создать элементы, которые нужно поместить в сетку, добавьте их в список, установите свойства строки и столбца и добавьте их в коллекцию Grid.Children:
int rowIndex = myGrid.Rows.Count - 1; // or whatever
TextBox fname = new TextBox();
Grid.SetRow(fname, rowIndex);
Grid.SetColumn(fname, 0);
myGrid.Children.Add(fname);
Теперь вы можете программно обращаться к текстовому полю через переменную:
fname.Text = "I'm a text box";
или установить на нем привязки:
fname.SetBinding(TextProperty, new Binding { Source = mySource, Path = new PropertyPath("FirstName") });
РЕДАКТИРОВАТЬ: Как говорит Бенни в своем ответе, если вы хотите отобразить коллекцию данных, тогда ItemsControl, безусловно, лучший способ, чем программно добавить в Grid макета. Я оставлю ответ, так как он все еще может иметь отношение к сценариям, не относящимся к списку предметов.