Простой выбор:
Каждый использует MVVM, поэтому используйте MVVM.
Шаблонирование данных является основой wpf, и создание пользовательского интерфейса в коде не рекомендуется - поэтому используйте шаблонизацию данных.
Вы можете динамически добавлять шаблоны к ресурсам, создавая xaml в виде строк.Это рекомендуемый MS способ создания любого динамического интерфейса.Эти строки могут поступать из плоских файлов, напрямую из базы данных или веб-службы, и вы можете создавать их, манипулируя текстовыми файлами или сериализованными элементами управления.
Огромный плюс этого - у вас есть разметка «прямо здесь».Поэтому, когда все становится грушевидным, вы можете вставить экспериментальное решение и увидеть, как ошибки загораются в xaml или посмотреть, что видит пользователь.
Если связанный с типами шаблон не подходит по какой-то причине, тогда вы можетенапишите селектор dateatemplate и поместите туда свою логику.
Я не уверен, как вы ожидаете, что это будет прокручиваться точно, но я бы использовал список, некоторые шаблоны данных, связанные с типом для представления.Предполагая, что элементы могут иметь разные виды - вы, кажется, просто имеете эту «позолоченную» кнопку или метку в качестве опции.
Загрузка данных в модели просмотра по одному на строку.
.Добавить вObservablecollection, являющаяся открытым свойством в модели представления.
Свяжите это с источником элементов списка.
Затем они шаблонизируются в пользовательском интерфейсе.
В списке встроен скроллерв, но вы можете изменить шаблон, если вы хотите прокрутить, используя другой подход.