Всем привет)
Суть вопроса: в базе данных имеется набор данных, вроде срока жизни продукта и даты начала этого срока. В форме хочется отображать оставшееся время до истечения срока жизни, причем отображать до секунд. Классическая схема MVVM подразумевает изменение вью модели. Выходит что надо каждую секунду обновлять по таймеру модель представления. Вот только набор данных в БД может содержать теоретически у клиента до миллионов записей и пересчитывать все модели при том что отображаются только 20-30 из них выглядит расточительством расчетных мощностей.
Мне кажется более разумным реализовывать на вьюхе обновление и производить перерасчет таймера жизни на самой форме. Все что надо попросить представление обновить получение данных в отдельных контролах по таймеру из модели представления по биндингу. Отображаем таймер допустим через конвертер, для этого в конвертере у текущего элемента из списка получаем дату начала жизни, срок жизни и по текущему времени высчитываем остаток, формируем строку таймера для отображения. Если просто привязаться к VM, то такой конвертер один раз рассчитает время жизни и поскольку обновления от VM нет заморозит обновление контрола. А хочется периодически подергивать из вьюхи вызов данных. Мы вроде как используем все тот же биндинг, то есть другой связи между ViewModel и View нет, и не нарушаем паттерн.
Буду благодарен за любые идеи)
P.S.: на деле расчет отображать таймер или нет, как его считать и т.д. все зависит от ряда параметров в модели и заложенной разработчиками логики.

в базе данные с датой старта и срокомкак я понял вам надо их все вывести на экран, с обратным отсчетом, так?до миллионов записей- вы понимаете, что такое выводить разом бессмысленно, а значит нужны страницы. Я бы вам предложил следующее решение, то есть, вы делите данные по страницам (например 10 объектов за раз), при выводе страницы вы обращаетесь к базе, берете дату и все остальное, делаете VM с таймером и запускаете отсчёт, по завершению клиент повторно обращается к базе (если надо). – EvgeniyZ Apr 16 '21 at 14:26