ItemTemplates или UserControls - это, вероятно, то, что вы ищете.
Вы можете создать ItemTemplates для вещей в коллекции, чтобы они автоматически отображались тем или иным способом, и вы можете напрямую связываться с данными в классе, представленном вашим ItemTemplate.
Часто мне нравится создавать новый UserControl.
Вы в основном создаете новый элемент управления с XAML.
Затем вы можете создавать экземпляры и устанавливать текст данных каждого из них, как вы заявили, что хотите сделать.
Вы даже можете использовать его в других проектах XAML. Просто не забудьте добавить пространство имен. Что-то вроде:
xmlns:lp="clr-namespace:LocalProject"
Затем используйте его так же, как и другие элементы управления:
<StackPanel>
<lp:YourUserControl DataContext="bind to an object of the correct type here" />
</StackPanel>
И в этом коде вы сможете получить доступ к связанному объекту DataContext:
YourCustomClass cc = this.DataContext as YourCustomClass;