Я думаю, вы на правильном пути. Вот один из подходов, который вы можете использовать:
придерживаясь паттерна MVVM, ваша модель будет прослушивать новые сообщения. Он может поддерживать список текущих view / viewmodel и пользовательских пар. Если сообщение приходит от нового пользователя, создайте новое представление и соответствующую ему модель представления, а затем просто добавьте сообщения в коллекцию ObservableCollection в модели представления. Поскольку ObservableCollection реализует интерфейс INotifyCollectionChanged , любой привязанный к нему элемент пользовательского интерфейса будет автоматически получать уведомление при добавлении нового элемента в коллекцию и должен отображать его.
Если вы хотите получить действительно хитрый и сверхэффективный инструмент, у вас может быть одна модель представления, с которой связаны все отдельные представления, и они могут просто использовать механизм фильтрации, чтобы выделить правильные сообщения, которые они должны показывать (подсказка: используйте преобразователь значений на привязку к ObservableCollection). Выполнение этого означает, что вы поддерживаете только одну модель представления и одну коллекцию ObservableCollection, и это сокращает количество элементов, которые необходимо отслеживать.