Чтобы ответить на ваш вопрос: «программно» вы можете добавить, просто добавив / вставив объект в ObservableCollection
- но я думаю, что вам нужна функция автоматического добавления, которую вы описали ранее.
Проблема в том, что фреймворк не может знать, как создать экземпляр вашего интерфейса - он знает только, как создавать типы с конструкторами по умолчанию.
Таким образом, вы должны изменить свою ObserveableCollection, используя конкретный тип, или вы не можете использовать автоматическую функцию и должны добавить объект в коде позади.