ну для этого есть гугл и голова. НИкто не знает как решать проблемы, но решают же.
Ну а если серьезно, то во первых у тебя нет слоя ViewModel, только модель и вью.
Во вторых в слое модели у тебя ObservableCollection, что нарушает паттерн.
Почему у тебя ProgramViewModel наследуется от DataSaver? Это тоже не хорошо.
Можно это в отдельный сервис вытащить. ДТО сделай максимально отвязанными от вью